目录

如何定位WebSocket连接异常断开

问题现象

场景一:在建立WebSocket连接时失败。

场景二:WebSocket连接成功后,过段时间异常断开,并且断开时间相对固定。

场景三:WebSocket连接成功,但是在收发消息时异常断开,断开时间不固定。

背景知识

问题定位

  1. 开启on('open')、on('close')、on('error')监听事件,并在回调事件内打印日志,以提供报错信息。
  2. 确认连接断开的时间规律,分析hilog日志及网络数据包:

分析结论

WebSocket连接异常断开通常有多种原因,需要结合hilog日志及网络数据包分析断开原因。通常60s固定时长断开为客户端心跳机制主动断开,需要检查网络链路是否通畅及服务器是否回复Pong帧。

修改建议

  1. 如果服务器自行实现了心跳检测,不会回复Pong帧,可以将WebSocketRequestOptions的pingInterval参数置为0,关闭客户端默认的心跳检测。
  2. 如果是网络抖动导致的连接失败或随机断开,参考如何优化WebSocket长连接在弱网环境下的重连效率与心跳机制。