Tcp WebSocket ping应用程序数据的使用

Tcp WebSocket ping应用程序数据的使用,tcp,network-programming,websocket,Tcp,Network Programming,Websocket,除了将WebSocket帧标识为ping帧的操作码之外,WebSocket帧可能包含也可能不包含应用程序数据 据我所知,乒乓球的目的是防止TCP连接超时。这些帧包含尽可能小的伪数据(即操作码),尽可能频繁地发送,以表明连接仍在使用 还有别的吗?如果我从不在ping帧中发送应用程序数据,我会错过什么吗?例如,如果我在ping中发送令牌以建立ping和pong之间的对应关系,从而通过发送ping和接收相应pong之间的时间来判断连接质量,我是否会滥用ping/pong?ping和pong帧允许有效负

除了将WebSocket帧标识为ping帧的操作码之外,WebSocket帧可能包含也可能不包含应用程序数据

据我所知,乒乓球的目的是防止TCP连接超时。这些帧包含尽可能小的伪数据(即操作码),尽可能频繁地发送,以表明连接仍在使用


还有别的吗?如果我从不在ping帧中发送应用程序数据,我会错过什么吗?例如,如果我在ping中发送令牌以建立ping和pong之间的对应关系,从而通过发送ping和接收相应pong之间的时间来判断连接质量,我是否会滥用ping/pong?

ping和pong帧允许有效负载,如果在ping中发送,则相应pong将返回有效负载。它们可能对应用程序数据没有用处,原因有几个

  • 有效负载仅为二进制,限制为125字节
  • 仅响应最近的ping而不是单独响应每个ping是合法的
  • 许多WebSocket接口(尤其包括浏览器提供给JavaScript的接口)不向应用程序公开ping和pong
也就是说,所有符合RFC6455的WebSocket实现都会回复ping,即使它们不让应用程序知道ping或者不允许应用程序发送自己的ping。这使得使用乒乓球及其有效载荷绝对适合于保留消息或其他网络级别的统计或记账