可靠的WebSocket连接状态检测

2024-03-27

我一直在寻找实现可靠的 WebSocket 连接恢复机制。

经过一番调查,我发现一种方法是将心跳发送到服务器(ping/pong),并检查我是否收到整个pong在有限的时间内。

因此,如果连接实际上已断开或速度非常慢,则会被视为断开连接 if a pong等待超时,代码应该调用WebSocket.close().

归根结底,我问这个问题是为了使用 WebSockets 验证连接重新连接工作流程,并检查我是否遗漏了某些内容。

也就是说,我的问题是,这是实现 WebSockets 重新连接机制的正确且可靠的工作流程吗?


Websocket 协议为 ping 和 pong 定义了特殊的控制框架,但它们无法通过 JavaScript API 访问。但如果服务器发送这些帧,浏览器就会应答。

但是,如果连接突然断开并变成半开连接 http://blog.stephencleary.com/2009/05/detection-of-half-open-dropped.html,虽然服务器会检测到它,但浏览器不会。所以我想在应用程序级别发送您自己的 ping 并不是一个坏主意。

回答你的问题是的,这是个好主意,因为如果连接半打开,你的客户端就不会收到更新,因为他认为它已连接。在websocket中,客户端必须发起连接,因此即使浏览器意识到断开连接,也无法重新连接。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

可靠的WebSocket连接状态检测 的相关文章

随机推荐