【问题标题】:Websocket - Should client send ping frames?Websocket - 客户端应该发送 ping 帧吗?
【发布时间】:2016-05-13 02:44:04
【问题描述】:

正如标题所暗示的,Ping Frames 应该只从服务器发送还是最好让两个端点都发送它们?如 Websocket RFC 中所述:

注意:Ping 帧可以用作保活...

因此,通过让一个端点发送 ping 请求,它应该保持连接打开,对吗?

上面一行的第二部分是这样的:

或作为验证远程端点是否仍然响应的一种方式。

我是 websockets 概念的新手,但是如果连接从服务器关闭,客户端不会收到通知吗?

【问题讨论】:

  • 考虑服务器刚刚消失的情况,也许它崩溃了。谁或什么将通知客户?或者说靠近服务器的网络链接关闭了很长时间,以至于当它恢复时,服务器已经完全忘记了这个客户端。谁或什么会告诉客户?
  • 我明白了.. 所以客户端应该 ping 服务器.. 谢谢 David :)
  • 除非它有其他方法来检测连接丢失。例如,它可以检测到服务器没有 ping 通它。或者它可能已经定期发送查询,并且可以通过超时来检测连接丢失。
  • 感谢您的快速回复.. 我在 node 中使用了 websocket,它隐藏了很多低级别的东西>.

标签: http websocket ping


【解决方案1】:

考虑一下服务器刚刚消失的情况,它可能会崩溃。谁或什么将通知客户?或者说靠近服务器的网络链接关闭了很长时间,以至于当它恢复时,服务器已经完全忘记了这个客户端。谁或什么会告诉客户?

有三种可能:

  1. 客户端不需要检测连接丢失。在这种情况下,您无需做任何特别的事情。

  2. 客户端已经有一些方法可以检测到连接丢失。例如,如果连接空闲一段时间,客户端可以发送应用程序级查询,如果没有响应或查询失败,则客户端可能会超时。

  3. 客户端需要检测连接丢失但没有现成的方法来做到这一点。在这种情况下,使用 ping 是有意义的。

在典型的查询/响应协议中,客户端通常不需要 ping 服务器,因为它可以发送一些具有相同效果的查询。除非 websocket 上层的协议支持某种方式让服务器查询客户端,否则服务器通常只有两种选择:使用 ping 检测丢失的连接或断开空闲的客户端。

【讨论】:

    猜你喜欢
    • 2018-02-08
    • 1970-01-01
    • 1970-01-01
    • 2012-05-22
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多