我正在实现一个WebSocket node.js服务器,它将浏览器websockets作为客户端。
我想实现一个ping / pong机制,其中服务器每隔5秒向客户端发送一个Ping帧。
所以我的问题是:
我应该在Ping帧中使用哪些数据有效负载?
发送Ping帧的建议间隔是什么?
浏览器是否可以向我的服务器发起ping请求,因此我需要实现对Ping事件的回复?
答案 0 :(得分:1)
使用您想要的任何有效负载。 WebSocket只是一种传输,您可以决定它传输的数据。根据WebSocket规范:
Ping框 MAY 包括“应用程序数据”。
这意味着它根本不需要发送任何数据。
使用适用于您使用WebSockets实现的通信的任何时间间隔。
WebSockets是双向的,因此浏览器可以向您的服务器发送Ping帧。根据规范:
收到Ping帧后,端点必须发送Pong帧作为响应,除非它已经收到了关闭帧。它应该尽快响应Pong框架。 Pong帧在第5.5.3节中讨论。
端点可以在建立连接之后和连接关闭之前随时发送Ping帧。
这意味着任何一方都可以随时发送Ping。