可靠的WebSocket连接状态检测

时间:2014-07-07 08:14:26

标签: javascript html html5 websocket

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

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

因此,如果连接实际上已关闭或者速度很慢,如果 pong 等待超时,则会将其视为已断开连接,并且代码应调用WebSocket.close()

在一天结束时,我问这个问题是使用WebSockets验证连接重新连接工作流程,并检查我是否遗漏了某些内容。

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

1 个答案:

答案 0 :(得分:3)

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

但是,如果连接被突然切断并变为half-open connection,虽然服务器会检测到它,但浏览器不会。所以我想在应用程序级别发送你自己的ping并不是一个坏主意。

回答你的问题是的,这是个好主意,因为如果连接被半开,你的客户端没有得到更新,因为他认为它是连接的。在websocket中,客户端必须启动连接,因此即使浏览器意识到断开连接,也无法重新连接。