手账正文
网页能开,聊天却一直重连?检查 WebSocket 连接
网站首页正常,聊天窗口却一直“重新连接”。首页与实时消息可能不是同一条连接,排查时要找到真正负责收发消息的那个请求。
先分清两种情况
一种是从来没有连上,另一种是已经收到消息,过一会儿才断。前者先查地址、访问权限和连接建立;后者再看中断时间与持续连接条件。
不要只拿首页能打开来证明实时功能正常。
在浏览器里找到对应连接
桌面 Chrome 可以打开开发者工具,在 Network(网络)里使用 WS 筛选,然后重现问题。查看连接地址、状态,以及 Messages 中是否出现消息。
如果找不到,先取消筛选确认网站实际用什么方式,不要把普通网页请求硬当成 WebSocket。
状态码需要结合连接方式看
常见的 HTTP/1.1 WebSocket 建立过程会出现 101,表示协议切换。但其他方式可能不同,不能要求所有实时连接都必须显示同一个数字。
403 通常需要核对服务端为何拒绝。1006 表示观察到了异常关闭,本身不会告诉你究竟是节点、网络还是服务器导致,不能把它当成原因说明。
总在相近时间断开,记下间隔
连接建立后,长时间没有消息是否更容易断?每次是否接近同样时长?这些记录可以帮助维护者检查空闲超时或连接保活。
普通用户先固定浏览器和网络,分别换一个节点或另一种网络做少量比较。网站侧的超时与代理转发设置,需要维护者结合日志处理,不是一直刷新页面就能修好。
评论