客户端正在使用不受支持的 Socket.IO 或 Engine.IO 协议版本错误

Posted

技术标签:

【中文标题】客户端正在使用不受支持的 Socket.IO 或 Engine.IO 协议版本错误【英文标题】:The client is using an unsupported version of the Socket.IO or Engine.IO protocols Error 【发布时间】:2021-05-10 03:30:04 【问题描述】:

我正在尝试在树莓派 4 中使用 flask_socketio、socketIO_client 和 SOCKET.IO 在 python 中运行客户端和服务器,但出现以下错误:

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

这些是我当前的版本:

pi@raspberrypi:~/Desktop/EDAdataLogger $ npm list socket.io EDAdataLogger@ /home/pi/Desktop/EDAdataLogger └── socket.io@3.1.1

pi@raspberrypi:~/Desktop/EDAdataLogger $ npm list socket.io-client EDAdataLogger@ /home/pi/Desktop/EDAdataLogger └── socket.io-client@3.1.1

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

如何定义 javascript Socket.IO 版本和 Socket.IO 协议修订,以便所有内容都根据 (https://pypi.org/project/python-socketio/) 匹配?

我该如何解决这个问题?谢谢

【问题讨论】:

连接 URL 表明您的 Socket.IO 客户端是版本 1 或版本 2。它应该是版本 3 以与您安装的 Python 包兼容。如果您想要详细信息,版本 1 和 2 在 URL 中发送 EIO=3,而版本 3 发送 EIO=4 【参考方案1】:

似乎有一些backward compatibility issues 带有 SocketIO。您可以卸载python-engineiopython-socketio(和Flask-SocketIO,只是为了安全起见)并重新安装较低版本。

对我有用的组合是:

Flask-SocketIO==4.3.1
python-engineio==3.13.2
python-socketio==4.6.0

【讨论】:

谢谢,这对我有用【参考方案2】:

要修复版本不兼容,可以运行下面的“升级”命令:

pip install --upgrade python-socketio==4.6.0

pip install --upgrade python-engineio==3.13.2

pip install --upgrade Flask-SocketIO==4.3.1

【讨论】:

以上是关于客户端正在使用不受支持的 Socket.IO 或 Engine.IO 协议版本错误的主要内容,如果未能解决你的问题,请参考以下文章

通过 socket.io 发送画布图像

可以将 socket.io 用于域套接字吗?

Socket.io 1.x:只使用 WebSockets?

socket.io切换命名空间

在 node.js 中使用 socket.io 通过 webrtc 广播实时音频

socket.io 不适用于传输:['xhr-polling']