WebSocket连上就断?联调实战

2026年 阅读约 5 分钟 开发教程 · 后端开发

WebSocket连上秒断、收不到推送?本文教你区分ws与wss、心跳超时、鉴权过期,附在线测试工具,聊天室行情推送联调一次过。

连上秒断的三种现场

聊天室发不出消息、行情推送停了、联调时连上 3 秒就掉,看 close code:1006 是异常掉线,1008 是服务端策略踢人,1015 是 TLS 握手失败。对着 code 查,比瞎重试快十倍。

ws 与 wss 先对上

HTTPS 页面只能连 wss,混用 ws 会被浏览器直接拦,连握手包都发不出去。Nginx 反代别忘了升级头 Upgrade 和长连接超时,默认 60 秒超时的配置,空闲聊天室必掉线。

注意:本地 ws 调通不代表线上 ok,wss 证书过期、中间件超时,三个环节逐个过。

心跳:谁先超时谁背锅

NAT 和网关会杀掉空闲连接,客户端 25-30 秒发一次 ping,服务端回 pong,双方超时阈值对齐。只一端发心跳、另一端不认,等于没发,联调先把两边间隔摆出来。

鉴权过期被踢下线

连接时带的 Token 过期,服务端 1008 踢人;长连接场景 Token 续期后要重连或走刷新通道。用JWT 解码先确认 exp,再查服务端踢人日志,两边一对就清楚。

在线复现三步

用WebSocket 测试工具:连地址、发心跳、看日志,断线 code 和耗时全记录。复现出来再改代码,改完同一套步骤验证,联调闭环不靠猜。

开始联调

地址即连、心跳日志全记录,断线原因一目了然。