Websocket关闭错误处理



当在客户端和服务器之间建立web套接字连接时,连接可能会由于以下几个原因意外关闭:

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

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

当阅读WebSocket关闭时,我理解了WebSocket协议支持服务器发起的ping pongs,它可以用于服务器知道客户端是否崩溃。(不支持客户端发起的乒乓球)。这是处理客户端崩溃的最好方法吗?

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

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

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

然而,客户端也应该知道服务器是否不可达或连接是半打开的,所以有一个应用程序级别的ping/pong(即:一些用户数据表示ping或pong)将允许服务器和客户端弄清楚另一端是否不可达。与之前一样,服务器可以在给定的时间内发送ping并期望ping,但客户端也可以在给定的时间内期望ping或认为自己已断开连接,然后尝试再次重新连接。

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

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

相关内容

  • 没有找到相关文章