当我阅读有关 Websocket 的内容时,通常会提到心跳是必须具备的。 MDN 甚至写了一篇关于心跳的特殊操作码 https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_servers#Pings_and_Pongs_The_Heartbeat_of_WebSockets.
但是心跳是 Websocket 的强制组成部分吗?我是吗have to实现它,否则我的网络套接字将被浏览器或其他一些标准终止?
The RFC 6455 https://www.rfc-editor.org/rfc/rfc6455,WebSocket 协议的当前参考,定义了一些控制帧传达有关 WebSocket 的状态:
- Close:
0x8
- Ping:
0x9
- Pong:
0xA
Ping 和 Pong 用于心跳并允许您检查客户端是否仍然响应。请参阅quote https://www.rfc-editor.org/rfc/rfc6455#section-5.5.2 below:
Ping 帧可以用作保活或作为一种手段
验证远程端点是否仍然有响应。
但是当客户端收到 Ping 信号时,必须将 Pong 信号发送回服务器。请参阅quote https://www.rfc-editor.org/rfc/rfc6455#section-5.5.2:
收到 Ping 帧后,端点必须发送 Pong 帧
响应,除非它已经收到关闭帧。它应该
一旦可行,请尽快用 Pong 框架进行响应。
底线
设计时both客户端和服务器,支持心跳由你决定。但如果您需要检查连接是否仍然有效,Ping 和 Pong 帧是标准方法。
请记住,如果发送了 Ping 而没有发回 Pong,则一个对等点可能会认为另一个对等点已不再存在。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)