Chrome网络面板WS过滤器下Socket.io连接长期pending是否正常?
WebSocket/Socket.io连接在Chrome网络面板显示Pending是否正常?
这种长期处于pending状态的WebSocket连接是完全正常的,下面给你拆解原因:
为什么显示Pending?
WebSocket是基于HTTP握手的长连接:握手阶段浏览器发送HTTP请求,服务器返回101 Switching Protocols响应后,连接就切换为WebSocket协议并保持开放状态。Chrome网络面板里的WS条目会一直显示pending,本质是因为连接未主动关闭(比如未调用socket.close()),并非请求卡住或失败。Pending状态会持续存在吗?
会的。只要WebSocket连接保持活跃(页面未刷新、网络未中断、未主动调用关闭方法),这个pending状态就会一直显示。只有当连接终止时,面板才会更新为完成状态。是不是socket在等待请求?
不是。WebSocket是双向通信协议,和传统HTTP的请求-响应模式不同。连接建立后,客户端和服务器可以随时互相发送消息,不需要客户端先发起请求。这个pending只是Chrome对长连接的展示方式,和“等待请求”没有关系。
验证连接正常的小方法
选中网络面板里的这个WS连接,切换到「Frames」标签页,如果能看到收发的消息帧,就说明连接完全正常,不用纠结pending状态。
内容的提问来源于stack exchange,提问作者Aljohn V
相关产品推荐
相关产品推荐

