Flask-SocketIO连接报错:Socket.IO/Engine.IO协议版本不兼容如何解决?
Socket.IO/Engine.IO协议版本不兼容问题解决方案
问题概况
服务端基于 python-engineio==4.3.3、python-socketio==5.7.1、Flask-SocketIO==5.2.0 搭建,客户端连接时触发以下报错:
- 服务端日志:
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) - 客户端日志:
WARNING:socketIO-client:127.0.0.1:8081/socket.io [engine.io waiting for connection] unexpected status code (400 "The client is using an unsupported version of the Socket.IO or Engine.IO protocols")
核心原因
你使用的客户端库 socketIO-client 是旧版本,仅支持 Socket.IO v1.x/v2.x 协议;而服务端的 python-socketio 5.x 对应 Socket.IO v4.x、Engine.IO v4.x 协议,两者版本完全不兼容。
解决方案
方案1:更换兼容的客户端库
放弃维护停滞的 socketIO-client,使用官方同步维护的 python-socketio 客户端版本,确保与服务端版本一致:
- 卸载旧客户端库:
pip uninstall socketIO-client - 安装匹配版本的客户端依赖:
pip install python-socketio==5.7.1 - 客户端连接代码示例(适配新库):
import socketio # 初始化客户端实例 sio = socketio.Client() @sio.event def connect(): print("已成功连接到服务端") @sio.event def disconnect(): print("与服务端断开连接") # 发起服务端连接 sio.connect("http://127.0.0.1:8081") sio.wait()
方案2:降低服务端版本适配旧客户端
如果必须保留旧的 socketIO-client,需将服务端依赖降级到支持 Socket.IO v2.x 的版本:
- 卸载现有服务端依赖:
pip uninstall Flask-SocketIO python-socketio python-engineio - 安装适配版本:
pip install Flask-SocketIO==4.3.2 python-socketio==4.6.1 python-engineio==3.14.2 - 重启服务端后,使用原客户端代码即可正常连接。
验证
完成版本调整后,重启服务端并运行客户端,检查是否仍存在协议不兼容报错,确认连接状态正常。
内容的提问来源于stack exchange,提问作者HTL
相关产品推荐
相关产品推荐

