快速检测互联网客户端的websocket丢失

时间:2020-01-07 18:45:37

标签: javascript websocket

我正在使用WebSockets连接到我无法控制的服务器。这是一个聊天应用程序,因此我希望当用户的互联网由于某种原因被切断时,我会显示“正在重新连接”警报,并尝试每2秒重新连接一次。

问题是,例如,当您关闭调制解调器时,.onclose事件最多可能需要1分钟才能启动,而我没有办法知道用户是否仍然与服务器连接。

代码示例:

<script type="text/javascript">
    var ws = new WebSocket("wss://echo.websocket.org");
    ws.onerror = function () {
        console.log("error happened")
    }
    ws.onclose = function () {
        // websocket is closed.
        console.log("Connection is closed...");
    };
</script>

1 个答案:

答案 0 :(得分:1)

如果要检测用户是否已脱机,可以只使用offline事件。

这是一个例子:

window.addEventListener('offline', e => {
  console.log('offline')
})

如果您坚持使用WebSockets的onclose/onerror处理程序,则需要增加ping间隔或减少WebSockets服务器上的超时。从OP判断,这些值似乎设置为60秒。