Websocket-客户端应该发送ping帧吗?

Kim*_*yer 6 http ping websocket

顾名思义,应仅从服务器发送Ping帧,还是最好由两个端点发送它们?如Websocket RFC中所述:

注意:Ping帧可以用作保持活动状态...

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

上一行的第二部分是:

或作为一种方法来验证远程端点仍在响应。

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

Dav*_*rtz 5

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

有以下三种可能:

  1. 客户端不需要检测连接丢失。在这种情况下,您无需执行任何特殊操作。

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

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

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