gpt4 book ai didi

sockets - websocket 关闭错误处理

转载 作者:行者123 更新时间:2023-12-03 07:38:41 25 4
gpt4 key购买 nike

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

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

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

当阅读有关 WebSocket close 的内容时,我了解到 WebSocket 协议(protocol)支持服务器发起的 pings pongs,它可用于服务器了解客户端是否已崩溃。 (不支持客户端发起的乒乓球)。 - 这是处理客户端崩溃的最佳方式吗?

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

最佳答案

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

一种常见的方法是定期从服务器向客户端发送协议(protocol)级别的 ping。如果服务器在给定时间内没有获得 pong 帧,则服务器会断开客户端连接。

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

关于关闭原因,值得一查:getting the reason why websockets closed

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

关于sockets - websocket 关闭错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33104436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com