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

时间:2016-02-03 18:32:02

标签: http websocket ping

正如标题所示,Ping帧只应从服务器发送,还是最好让两个端点都发送它们?正如Websocket RFC中提到的那样:

  

注意:Ping帧可以用作keepalive ......

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

上述第二部分是:

  

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

我对websockets的概念不熟悉,但如果连接从服务器关闭,则会通知客户端?

1 个答案:

答案 0 :(得分:4)

考虑服务器刚刚离开的情况,也许它会崩溃。谁或什么会通知客户这个?或者说靠近服务器的网络链接已经关闭了很长时间,当它恢复时,服务器完全忘记了这个客户端。谁或什么告诉客户?

有三种可能性:

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

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

  3. 客户端需要检测连接丢失,但没有现成的方法。在这种情况下,使用ping是有道理的。

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