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

Node客户端可连接Socket.IO服务器,Python客户端无法连接求排查

Python Socket.IO客户端连接失败的问题排查与修复

你的Python代码存在两个核心问题,导致无法和Node.js Socket.IO服务器正常建立连接:

1. 事件监听顺序错误

Python代码里你先调用了sio.connect()发起连接,之后才定义connect和disconnect的事件回调函数。但连接操作会立即执行,此时事件监听还未注册,就算连接成功也触发不了connect提示,甚至可能因未处理连接过程中的事件导致异常。

而Node.js客户端是先创建Socket实例、注册事件,再自动触发连接,逻辑顺序是正确的。

2. 传输方式与版本兼容性问题

Node.js的socket.io-client和Python的python-socketio需要与服务器的Socket.IO版本匹配。如果服务器使用Socket.IO v4及以上版本,Python客户端需安装**python-socketio v5+版本**,同时部分服务器要求显式指定传输方式,避免默认轮询机制出现问题。

修复后的Python代码

import socketio

# 先创建客户端实例
sio = socketio.Client()

# 提前注册所有事件监听
@sio.on('connect')
def connect():
    print('socket is connected')

@sio.on('disconnect')
def disconnect():
    print('server is down')

# 最后发起连接,强制使用websocket传输并确保参数正确
sio.connect(
    'wss://winseller.turkmenexpress.ir',
    auth={'token': "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJwSWQiOiIyNyIsIm1vYmlsZSI6IjA5MTI3Mzk2Nzk0In0.moQMWb_I1CyhCJ9Gh4TLH8LiVwtE7h2wH4DPY-KEeT0"},
    wait=True,
    wait_timeout=10,
    transports=['websocket']
)

额外检查要点

  • 确认安装匹配版本的依赖:
    pip install python-socketio[client]==5.10.0
    pip install python-engineio==4.9.0
    
  • 若服务器拦截特定User-Agent,可在connect时添加请求头:
    headers={'User-Agent': 'socketio-client-python/5.10.0'}
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 01:35:26