连上秒断的三种现场
聊天室发不出消息、行情推送停了、联调时连上 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 和耗时全记录。复现出来再改代码,改完同一套步骤验证,联调闭环不靠猜。