The client is using an unsupported version of the Socket.IO or Engine.IO protocols Error
Asked Answered
B

7

25

I'm trying to run a client an server in python using flask_socketio, socketIO_client and SOCKET.IO in a raspberry pi 4 but I'm getting the following error:

The client is using an unsupported version of the Socket.IO or Engine.IO protocols (further occurrences of this error will be logged with level INFO)
192.168.1.80 - - [05/Feb/2021 18:30:41] "GET /socket.io/?EIO=3&transport=polling&t=NTpTT-L HTTP/1.1" 400 219 0.000618

These are my current versions:

pi@raspberrypi:~/Desktop/EDAdataLogger $ npm list socket.io EDAdataLogger@ /home/pi/Desktop/EDAdataLogger └── [email protected]

pi@raspberrypi:~/Desktop/EDAdataLogger $ npm list socket.io-client EDAdataLogger@ /home/pi/Desktop/EDAdataLogger └── [email protected]

python-engineio==4.0.0
python-socketio==5.0.4
Flask==1.1.2
Flask-Session==0.3.2
Flask-SocketIO==5.0.1

How can I define JavaScript Socket.IO version and Socket.IO protocol revision so everything matches according to (https://pypi.org/project/python-socketio/) ?

How can I fix this? Thank you

Bollay answered 5/2, 2021 at 19:8 Comment(2)
The connection URL suggests your Socket.IO client is a version 1 or version 2. It should be a version 3 to be compatible with the Python packages that you installed. If you want the details versions 1 and 2 send EIO=3 in the URL, while version 3 sends EIO=4.Mclaughlin
Have you figured it out now??Corncrib
P
39

There appears to be some backward compatibility issues with SocketIO. You can uninstall python-engineio, python-socketio (and Flask-SocketIO just to be on the safe side) and reinstall lower versions.

The combination that worked for me was:

Flask-SocketIO==4.3.1
python-engineio==3.13.2
python-socketio==4.6.0
Pterosaur answered 5/3, 2021 at 17:33 Comment(1)
Which flask version would this be compatible with?Lagan
C
23

To fix the version incompatibility, you can run below "upgrade"commands:

pip install --upgrade python-socketio==4.6.0

pip install --upgrade python-engineio==3.13.2

pip install --upgrade Flask-SocketIO==4.3.1
Concertmaster answered 17/5, 2021 at 4:3 Comment(1)
Thank you Ravi! Worked perfectly to fix my issue on a M1 Mac!Saintpierre
C
3

flask-socketio-5.1.2 python-engineio-4.3.2 python-socketio-5.6.0

script src="//cdnjs.cloudflare.com/ajax/libs/socket.io/4.5.0/socket.io.js">

This worked for me. This error is due to dependency related to python-engineio . After this, check your socket request shows EIO4 like this "GET /socket.io/?EIO=4&transport=websocket&sid=mJ1g8wm0didssJSiAAAA HTTP/1.1" 200

Conurbation answered 19/5, 2022 at 7:11 Comment(0)
U
2

Check for the compatibility between the JS Client version and the Socket.IO server version here: https://socket.io/docs/v4/client-installation/ and accordingly upgrade/downgrade the client/server version.

You will need these modules on the server side:
Flask-SocketIO
python-engineio
python-socketio

You will have this kind of URL in your client: //cdnjs.cloudflare.com/ajax/libs/socket.io/

One working example, which I'm using:

On Server side:
Flask-SocketIO==5.2.0
python-engineio==4.3.3
python-socketio==5.7.1
simple-websocket==0.7.0

On Client side:
//cdnjs.cloudflare.com/ajax/libs/socket.io/4.2.0/socket.io.js

Unearthly answered 31/7, 2022 at 8:25 Comment(0)
M
2

You are using The JavaScript client version 1.4.8, from about 6 years ago: https://www.npmjs.com/package/socket.io-client/v/1.4.8.

I strongly recommend that you upgrade your Socket.IO client to the latest 4.x versions, but if that cannot be helped, then the Flask-SocketIO documentation clearly tells you what versions of the Python packages to use:

Socket.IO version compatibility table

Mclaughlin answered 18/10, 2022 at 9:20 Comment(1)
Thank you for your kind answer. The method you gave me was done beforehand Even though java socketio ran with a version that was released five days ago, The same problem has occurred Once again, I will test it after installing the package to match the java socket 1.x version Thank you.Hot
B
1

My fix was to use the socket.io version, not cloudflare as the source

Bulgaria answered 20/6, 2022 at 9:2 Comment(1)
As it’s currently written, your answer is unclear. Please edit to add additional details that will help others understand how this addresses the question asked. You can find more information on how to write good answers in the help center.Douglassdougy
I
1

my fix was to use socket io itself as source not cloudfare <script>src="https://cdn.socket.io/4.6.0/socket.io.min.js" integrity="sha384-c79GN5VsunZvi+Q/WObgk2in0CbZsHnjEqvFxC5DxHn9lTfNce2WW6h2pH6u/kF+" crossorigin="anonymous"</script>

Interoffice answered 8/3, 2023 at 14:53 Comment(1)
As it’s currently written, your answer is unclear. Please edit to add additional details that will help others understand how this addresses the question asked. You can find more information on how to write good answers in the help center.Douglassdougy

© 2022 - 2025 — McMap. All rights reserved.