I deployed some SocketIO code to clevercloud, I continually get an error of either xhr polling, or if I force websocket i.e. {transports: ['websocket']} I get websocket connection failed. It worked completely fine locally before breaking when being moved to clevercloud
Here is my server code:
application = Flask(__name__, template_folder='templates', static_folder='static')
application.secret_key = os.getenv('FLASK_SECRET_KEY')
application.config.update(SESSION_COOKIE_SAMESITE="None", SESSION_COOKIE_SECURE=True)
socketio = SocketIO(application, cors_allowed_origins="*", logger=True, engineio_logger=True)
...
...
...
if __name__ == '__main__':
socketio.run(application)
Here is my client code, for the messages namespace:
var socket = io('https://website.cleverapps.io/messages', {transports: ['websocket']});
...
clientside cdn .js version is socketio 4.3.1, here is my relevant listed requirements.txt:
- Flask 3.0.0
- eventlet 0.35.1
- Flask-SocketIO 5.3.6
- python-engineio 4.8.2
- python-socketio 5.11.0
clevercloud by default deploys with uWSGI, I tried following the docs for setting up a uWSGI server but am very confused how to do it in the context of clevercloud
Here are the server logs, browser logs are just continual "websocket error":
raise RuntimeError('You need to use the eventlet server. '
2024-02-04T06:22:24-06:00 RuntimeError: You need to use the eventlet server. See the Deployment section of the documentation for more information.
2024-02-04T06:22:24-06:00 [pid: 1799|app: 0|req: 10/22] my.ip.ad.dress () {62 vars in 1346 bytes} [Sun Feb 4 12:22:24 2024] GET /socket.io/?EIO=4&transport=websocket => generated 0 bytes in 1 msecs (HTTP/1.1 500) 0 headers in 0 bytes (0 switches on core 0)
2024-02-04T06:22:29-06:00 b64876ed-c169-425c-8eac-38e215a8f159 nginx: 2024/02/04 12:22:29 [error] 1556#1556: *37 upstream prematurely closed connection while reading response header from upstream, client: 91.208.207.142, server: _, request: "GET /socket.io/?EIO=4&transport=websocket HTTP/1.1", upstream: "uwsgi://127.0.0.1:9000", host: "website.cleverapps.io"
2024-02-04T06:22:29-06:00 ybZzQUFM8joDYmhGAAAE: Sending packet OPEN data {'sid': 'ybZzQUFM8joDYmhGAAAE', 'upgrades': [], 'pingTimeout': 20000, 'pingInterval': 25000}
2024-02-04T06:22:29-06:00 INFO:engineio.server:ybZzQUFM8joDYmhGAAAE: Sending packet OPEN data {'sid': 'ybZzQUFM8joDYmhGAAAE', 'upgrades': [], 'pingTimeout': 20000, 'pingInterval': 25000}
2024-02-04T06:22:29-06:00 ybZzQUFM8joDYmhGAAAE: Received request to upgrade to websocket
2024-02-04T06:22:29-06:00 INFO:engineio.server:ybZzQUFM8joDYmhGAAAE: Received request to upgrade to websocket
2024-02-04T06:22:29-06:00 Traceback (most recent call last):
2024-02-04T06:22:29-06:00 File "/home/bas/venv/lib/python3.11/site-packages/flask/app.py", line 1478, in __call__
2024-02-04T06:22:29-06:00 return self.wsgi_app(environ, start_response)
2024-02-04T06:22:29-06:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-02-04T06:22:29-06:00 File "/home/bas/venv/lib/python3.11/site-packages/flask_socketio/__init__.py", line 43, in __call__
2024-02-04T06:22:29-06:00 return super(_SocketIOMiddleware, self).__call__(environ,
2024-02-04T06:22:29-06:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-02-04T06:22:29-06:00 File "/home/bas/venv/lib/python3.11/site-packages/engineio/middleware.py", line 63, in __call__
2024-02-04T06:22:29-06:00 return self.engineio_app.handle_request(environ, start_response)
2024-02-04T06:22:29-06:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-02-04T06:22:29-06:00 File "/home/bas/venv/lib/python3.11/site-packages/socketio/server.py", line 430, in handle_request
2024-02-04T06:22:29-06:00 return self.eio.handle_request(environ, start_response)
2024-02-04T06:22:29-06:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-02-04T06:22:29-06:00 File "/home/bas/venv/lib/python3.11/site-packages/engineio/server.py", line 261, in handle_request
2024-02-04T06:22:29-06:00 r = self._handle_connect(environ, start_response,
2024-02-04T06:22:29-06:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-02-04T06:22:29-06:00 File "/home/bas/venv/lib/python3.11/site-packages/engineio/server.py", line 401, in _handle_connect
2024-02-04T06:22:29-06:00 ret = s.handle_get_request(environ, start_response)
2024-02-04T06:22:29-06:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-02-04T06:22:29-06:00 File "/home/bas/venv/lib/python3.11/site-packages/engineio/socket.py", line 90, in handle_get_request
2024-02-04T06:22:29-06:00 return getattr(self, '_upgrade_' + transport)(environ,
2024-02-04T06:22:29-06:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-02-04T06:22:29-06:00 File "/home/bas/venv/lib/python3.11/site-packages/engineio/socket.py", line 146, in _upgrade_websocket
2024-02-04T06:22:29-06:00 return ws(environ, start_response)
2024-02-04T06:22:29-06:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-02-04T06:22:29-06:00 File "/home/bas/venv/lib/python3.11/site-packages/engineio/async_drivers/eventlet.py", line 40, in __call__
2024-02-04T06:22:29-06:00 raise RuntimeError('You need to use the eventlet server. '
2024-02-04T06:22:29-06:00 RuntimeError: You need to use the eventlet server. See the Deployment section of the documentation for more information.
2024-02-04T06:22:29-06:00 [pid: 1799|app: 0|req: 11/23] my.ip.ad.dress () {62 vars in 1346 bytes} [Sun Feb 4 12:22:29 2024] GET /socket.io/?EIO=4&transport=websocket => generated 0 bytes in 1 msecs (HTTP/1.1 500) 0 headers in 0 bytes (0 switches on core 0)
Also it is asking me to use eventlet but it is already installed. I've went down practically every rabbithole on google trying to solve this, so thank you in advance for any help in the right direction. I have been stuck on this for going on 4 days : (
Also I read somewhere that there can only be 1 worker, so I have set uWSGI workers = 1 in clevercloud