javascript - 立即检测连接丢失 - Websocket - JavaScript
问题描述
有没有办法在 WebSocket 失去互联网连接后立即触发函数。
socket.onClose
并且socket.onError
不会触发满足我要求的立即响应。
解决方案
在某些情况下,操作系统本身并不知道连接已丢失(例如网络故障)。这有时被称为半开连接。
由于操作系统不知道连接已关闭,因此不会通知浏览器或节点服务器,也不会调用您的 WebSocket 回调。
这里有一篇关于半开连接的不错的博客文章。
您可以通过以下方式缓解该问题,例如:
在可疑情况下自行关闭套接字(即,当页面失去焦点时手动关闭套接字)。
实现客户端 ping。发送 ping 失败将向程序(和操作系统)表明连接丢失,从而导致
onclose
回调被调用。
这些选项总是会有一些延迟。网络丢失检测并不容易。
推荐阅读
- android - 带有 Navigation 组件的 Android popper 导航
- javascript - How to create a grid in react?
- algorithm - Finding items in array within range in non naive approach
- swiftui - ObservableObject with NWPathMonitor
- c# - Find General Path Inscribed in Polygon
- sql - SQL Server 列数据清理
- java - Why does my priorityqueue look like this?
- python - 使用新名称复制文件夹 - python
- c++ - 在给定条件的情况下,如何从输出语句中删除值?- C++
- c++ - 如何在类成员函数中添加错误检查?