websocket关闭错误处理

Ore*_*evi 3 sockets error-handling websocket

在客户端到服务器之间建立 Web 套接字连接时,连接可能会由于多种原因意外关闭:

  1. TCP 通道上不活动。
  2. 服务器问题导致连接关闭。
  3. 客户端崩溃或重新加载/刷新。

我正在寻找处理此类情况的方法,或者至少知道它们发生了。

在阅读有关 WebSocket close 的文章时,我了解到 WebSocket 协议支持服务器发起的乒乓操作 ,可用于服务器了解客户端是否崩溃。(不支持客户端发起的乒乓)。- 这是处理客户端崩溃的最佳方法吗?

另外,我在规范中看到,在客户端我们可以监听 onClose 事件,并且有几个代码可以理解为什么连接已关闭 - 当服务器崩溃时是否总是调用 onClose 事件?

vto*_*ola 5

服务器和客户端都可以发送 ping,但是 Javascript API 中没有发送此类控制帧的方法。

一种常见的方法是定期从服务器向客户端发送协议级别的 ping。如果服务器在给定时间内没有得到乒乓球帧,服务器将断开客户端连接。

但是,客户端还应该知道服务器是否无法访问或连接是否半开,因此具有应用程序级别的 ping/pong(即:代表 ping 或 pong 的一些用户数据)将允许服务器和客户端确定另一端是否不再可达。和以前一样,服务器可以在给定的时间内发送 ping 并期待 pong,但客户端也可以在给定的时间内期待 ping 或认为自己已断开连接,然后再次尝试重新连接。

关于关闭原因,值得检查:获取 websockets 关闭的原因

如果服务器崩溃并且连接保持半开状态,则必须自己检测这种情况并调用.close()WebSocket 对象,然后onclose将调用该事件。