You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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 客户端版本,确保与服务端版本一致:

  1. 卸载旧客户端库:
    pip uninstall socketIO-client
    
  2. 安装匹配版本的客户端依赖:
    pip install python-socketio==5.7.1
    
  3. 客户端连接代码示例(适配新库):
    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 的版本:

  1. 卸载现有服务端依赖:
    pip uninstall Flask-SocketIO python-socketio python-engineio
    
  2. 安装适配版本:
    pip install Flask-SocketIO==4.3.2 python-socketio==4.6.1 python-engineio==3.14.2
    
  3. 重启服务端后,使用原客户端代码即可正常连接。

验证

完成版本调整后,重启服务端并运行客户端,检查是否仍存在协议不兼容报错,确认连接状态正常。

内容的提问来源于stack exchange,提问作者HTL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 21:45:35