websocket 必须有心跳吗?

2024-01-01

当我阅读有关 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(使用前将#替换为@)

websocket 必须有心跳吗? 的相关文章

随机推荐