JavaScript WebSocket 为什么不提供 ping 和 pong

WebSocket JavaScript 大约 341 字

原因

WebSocket是基于TCP的长链接,保持长连接的功能由TCPkeepalive实现。当网络由连接态到中断态再到连接态转换时,TCP可能仍然保持了连接。

而使用了ping/pong后,可能在TCP由连接态到中断态时发出了ping包,这时发送不可达,触发了自定义的不可达逻辑。

应该让TCP自动管理WebSocket的连接,即使中断了连接而客户端没有收到onClose()回调,但当客户端发送一条信息到服务端时,也会触发onClose()回调。

参考

https://www.w3.org/Bugs/Public/show_bug.cgi?id=13104

https://datatracker.ietf.org/doc/html/rfc6455#section-1.7

阅读 105 · 发布于 2021-09-10

————        END        ————

扫描下方二维码关注公众号和小程序↓↓↓

扫描二维码关注我
昵称:
随便看看 换一批