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

Python WebSocket连接数秒后自动断开问题求助

解决WebSocket连接20秒后断开的问题

以下是几个针对性的排查和解决方向:

  • 验证Ping包的有效性
    你当前使用自定义JSON格式的ping消息,但要确认API是否要求客户端处理服务端返回的pong响应,或者该ping格式是否完全符合官方规范。部分服务端会判定无响应的ping为无效交互,进而断开连接。可以在消息监听逻辑中加入pong处理:

    def listen_messages(ws):
        while True:
            raw_msg = ws.recv()
            if not raw_msg:
                continue
            msg = json.loads(raw_msg)
            if msg.get("command") == "pong":
                print("Pong received, connection active")
            # 处理业务数据逻辑
    
  • 调整WebSocket连接参数
    初始化代码中的receive_limit_ms设置为1小时,但服务端可能有自己的连接超时阈值(比如20秒)。尝试添加timeout参数,并确保ping间隔小于服务端超时时间:

    def initialize(url):
        ws = websocket.WebSocket()
        ws.connect(url, receive_limit_ms=3600*1000, timeout=60)
        return ws
    

    部分WebSocket库默认超时较短,显式设置更长的超时时间可能避免被动断开。

  • 改用标准WebSocket Ping/Pong
    目前你发送的是自定义JSON ping,试试使用WebSocket协议层的标准ping方法,这种方式更易被服务端和网络中间件识别为活跃连接:

    def send_ping(ws):
        print("Sending standard WebSocket ping")
        ws.ping()
    

    同时可以监听标准pong帧,确认连接状态:

    def listen_messages(ws):
        while True:
            msg = ws.recv()
            if msg is None:
                # 处理断开逻辑
                break
            if isinstance(msg, bytes) and msg == b'':
                # 收到标准pong帧
                print("Standard pong received")
            else:
                # 处理业务JSON消息
                data = json.loads(msg)
                # ...
    
  • 排查网络中间件限制
    部分防火墙、代理服务器会主动断开20秒左右的“空闲”连接,自定义JSON消息可能不被识别为活跃流量。改用标准WebSocket Ping/Pong通常能解决这类问题,因为协议层的帧会被中间件判定为有效连接活动。

  • 优化重连策略(若需保留)
    如果上述方法都无法避免断开,优化重连逻辑以减少开销:重连时复用原sessionId(API允许的情况下),无需重新登录,直接发送订阅命令恢复数据接收:

    def reconnect(url, existing_session_id):
        ws = initialize(url)
        # 复用sessionId重新订阅
        ws.send(json.dumps({
            "command": "subscribe",
            "streamSessionId": existing_session_id,
            # 原订阅参数
        }))
        return ws
    

内容的提问来源于stack exchange,提问作者Luboš Hájek

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 15:45:57