Python中,websocket服务器端有有默认的发向客户端的pong心跳包,超时时间40s,客户端没有正确响应,服务器端就会出现下述错误:

服务器调用websocket:

start_server = websockets.serve(
    handle_client,## 处理客户端连接的异步函数
    "0.0.0.0",  # 监听所有IP地址
    8080         # 使用端口8080

)

错误提示:

Error: sent 1011 (unexpected error) keepalive ping timeout; no close frame received

测试方法:

服务器调用websocket的时,增加心跳包时间参数,看报警时间是否变化。如果是这个原因,错误提示会从40秒延长到100秒。

start_server = websockets.serve(
    handle_client,## 处理客户端连接的异步函数
    "0.0.0.0",  # 监听所有IP地址
    8080,         # 使用端口8080
   ping_interval=50,#心跳包发送间隔时间
   ping_timeout=50    #心跳包超时时间
)

更改办法:

方法一、客户端增加响应心跳包的代码;

方法二、将心跳包两个参数设为None,

start_server = websockets.serve(
    handle_client,## 处理客户端连接的异步函数
    "0.0.0.0",  # 监听所有IP地址
    8080,         # 使用端口8080
   ping_interval=None,#心跳包发送间隔时间
   ping_timeout=None    #心跳包超时时间
)

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐