【问题标题】:Noode.js ws: Server doesn't know that the client is disconnectedNode.js ws:服务器不知道客户端已断开连接
【发布时间】:2015-04-04 19:04:55
【问题描述】:

我们在使用节点ws websockets library 的项目中遇到问题。 当客户端失去网络连接时,知道客户端已断开连接的唯一方法是从服务器发送 ws.ping()。这对我们来说太消耗资源了。

有人知道是否有一种默认方法可以让 ws 服务器使用 TCP 级别的 keepalives 而不是使用 ping/pong 功能?

【问题讨论】:

  • 如果你在 webSocket 之上使用 socket.io,客户端会定期 ping 服务端。客户端使用它来了解连接何时终止,以便可以重新连接。但是,如果服务器知道任何“活动”客户端将每隔 X 时间间隔发送一个 ping,那么服务器可以利用它在该 X 时间间隔内没有收到这样一个 ping 的事实来自行拆除死连接。或者,如果您控制客户端,即使没有 socket.io,您也可以配置自己的 ping 间隔。
  • 感谢 jfriend00 的评论。我已经实现了 ping/pong 功能,但正在寻找一种不涉及应用程序层而只使用网络层的解决方案。在这里找到了一个答案,为什么 TCP 保持活动对 websockets 不是一个好主意:stackoverflow.com/questions/23238319/… socket.io 库对我们不可用,因为在 v1.0 之后,该库似乎不支持集群模块。这让我选择了 ws websockets。

标签: node.js websocket ping


【解决方案1】:

通过让客户端在收到消息时发送响应来解决此问题。

【讨论】:

    猜你喜欢
    • 2021-12-22
    • 2019-02-23
    • 1970-01-01
    • 1970-01-01
    • 2018-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-28
    相关资源
    最近更新 更多