我正在使用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>
答案 0 :(得分:1)
如果要检测用户是否已脱机,可以只使用offline
事件。
这是一个例子:
window.addEventListener('offline', e => {
console.log('offline')
})
如果您坚持使用WebSockets的onclose/onerror
处理程序,则需要增加ping间隔或减少WebSockets服务器上的超时。从OP判断,这些值似乎设置为60秒。