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>
解决方案
如果您想检测用户是否下线,您可以简单地使用该offline
事件。
这是一个例子:
window.addEventListener('offline', e => {
console.log('offline')
})
如果您坚持使用onclose/onerror
WebSockets 的处理程序,则需要增加 ping 间隔或减少 WebSockets 服务器上的超时。从您的 OP 来看,这些值似乎设置为 60 秒。
推荐阅读
- python - Synology 上的 Psycopg2
- python - 新的 python 轮子发布后 gcloud 应用程序部署超时
- javascript - 如何从 Cloud Firestore 中删除空文档?
- docker - docker for .NET 默认使用什么 Web 服务器
- javascript - React:使用道具和回调在父子之间传递和检索数据
- javascript - javascript中while循环的动画延迟
- react-native - 从 blob react-native (expo) 打开 PDF
- python-3.x - 跳过自身迭代(列表)
- c# - 以编程方式为 C# Vsto 中的给定工作表确定条件格式公式的结果
- javascript - Array.prototype.slice.call(arguments) 与 [...args] 有什么区别?