【发布时间】:2017-04-30 08:47:56
【问题描述】:
我正在实现一个 WebSocket node.js 服务器,它以浏览器 websockets 作为客户端。
我想实现一个 ping/pong 机制,服务器每 5 秒向客户端发送一个 Ping 帧。
所以我的问题是:
我应该在 Ping 帧中使用什么数据负载?
发送 Ping 帧的建议间隔是多少?
浏览器能否向我的服务器发起 ping 请求,所以我需要实现对 Ping 事件的回复?
【问题讨论】:
我正在实现一个 WebSocket node.js 服务器,它以浏览器 websockets 作为客户端。
我想实现一个 ping/pong 机制,服务器每 5 秒向客户端发送一个 Ping 帧。
所以我的问题是:
我应该在 Ping 帧中使用什么数据负载?
发送 Ping 帧的建议间隔是多少?
浏览器能否向我的服务器发起 ping 请求,所以我需要实现对 Ping 事件的回复?
【问题讨论】:
使用您想要的任何有效负载。 WebSocket 只是一个传输,你决定它传输什么数据。根据 WebSocket 规范:
Ping 帧可能包含“应用程序数据”。
这意味着它根本不需要发送任何数据。
对您使用 WebSocket 实现的通信使用任何合理的间隔。
WebSockets 是双向的,因此浏览器可以向您的服务器发送 Ping 帧。根据规范:
在收到 Ping 帧后,端点必须发送 Pong 帧作为响应,除非它已经收到了 Close 帧。它应该尽快响应 Pong 帧。 Pong 框架在 5.5.3 节中讨论。
端点可以在连接建立后和连接关闭之前的任何时间发送 Ping 帧。
这意味着任何一方都可以随时发送 Ping。
【讨论】: