Websockets:如何处理丢失的Pings?

时间:2013-02-04 14:47:21

标签: web-applications web websocket ping latency

我正在尝试实施一个协议,以便将收到的Pongs与相应的Pings进行匹配。

但是我如何处理我发送的Pings却没有收到Pong?这会发生吗?或者是否保证所有ping都有相应的Pongs,而且从未接收到Pong表示连接丢失? websocket协议文档对此保持沉默。

2 个答案:

答案 0 :(得分:2)

Websockets基于TCP协议,可确保按顺序处理所有数据包,并在继续处理收到数据之前重新传输丢失或损坏的数据包。

因此,对于丢失的乒乓球,唯一可能的解释是在连接另一端执行ping / pong协议时出错。

Web浏览时可以很容易地看到TCP协议及其排序的可靠性。当您的互联网连接不良时,网站加载可能会在进行中时被中断,但那些加载的部分总是处于正确的顺序而没有任何错误的错误$ / GHfDw(&amp; IjfdsAyW $§REggnfdER§$ HHxM + FD5 < / p>

答案 1 :(得分:2)

一致的WebSocket实现必须在收到ping后返回pong。通常,在合理的时间之后没有pong意味着网络错误或其他东西在远程端点上忙或坏。有一些警告。

  • 只有最近的ping必须得到确认。如果你发送两个ping,你可能只会得到一个乒乓球。
  • ping和pong是控制帧。 WebSocket没有用于控制帧的单独通道。大数据帧可能会延迟接收紧随其后的ping。实现可能会对数据消息进行分段,以改善控制消息的延迟。
  • 在收到关闭框架后不会发送p ..