检测 Web 套接字连接已关闭



我正在使用node.js和WebSocket-Node来构建一个简单的聊天websocket服务器。

客户端是一个安卓应用程序。

服务器必须以两种方式与客户端通信:

  • 连接客户端时的 WebSocket 消息(应用在前台打开)
  • 使用谷歌GCM推送通知

但是有一个小问题我需要弄清楚。

当客户端连接到服务器并且互联网连接断开时,服务器不会收到通知,因为客户端没有发送关闭帧。因此,在大约 10 秒内,服务器认为连接仍然处于活动状态。

如果在这 10 秒内服务器通过套接字发送消息......则消息永远无法到达客户端。

我需要检测连接何时关闭,或者在连接关闭时使用 GCM 发送消息的另一种方式。

有办法吗?

从服务器一侧看,不干净的断开连接(未发送断开连接消息)与非常慢的连接无法区分。

你需要做的是有某种心跳。WebSockets在协议级别上为此提供了ping。如果您的库公开了这一点,请将 ping 设置为您愿意接受的延迟,并添加一个处理程序,以便在超时后失败/未完成。

回答我自己的问题,因为: 这是不可能的,我找到了另一种更好的方法来处理我的具体情况

    当服务器向客户端发送消息时,客户端
  • 回复服务器,让服务器知道消息已经传递到客户端。
  • 如果服务器在超时后未收到来自客户端的响应,则认为连接已关闭。
  • 继续通过 GCM 发送消息(或存储消息以便在客户端重新连接时再次发送)。

相关内容

  • 没有找到相关文章

最新更新