【websocket】WebSocket 连接频繁断开, 错误码

2023-03-19  本文已影响0人  Bogon

WebSocket 正是一种服务端推送的技术代表。

随着 HTML5 的出现,基于单个 TCP 连接的全双工通信的协议 WebSocket 在 2011 年成为 RFC 标准协议,逐渐代替了短轮询和长轮询的方式,而且由于 WebSocket 协议获得了 Web 原生支持,被广泛应用于 IM 服务中,特别是在 Web 端基本属于 IM 的标配通信协议。

和短轮询、长轮询相比,基于 WebSocket 实现的 IM 服务,客户端和服务端只需要完成一次握手,就可以创建持久的长连接,并进行随时的双向数据传输。

当服务端接收到新消息时,可以通过建立的 WebSocket 连接,直接进行推送,真正做到“边缘触发”,也保证了消息到达的实时性。

WebSocket 的优点是:
支持服务端推送的双向通信,大幅降低服务端轮询压力;
数据交互的控制开销低,降低双方通信的网络开销;
Web 原生支持,实现相对简单。

image.png image.png

WebSocket断开时,会触发CloseEvent, CloseEvent会在连接关闭时发送给使用 WebSockets 的客户端. 它在 WebSocket 对象的 onclose 事件监听器中使用。
CloseEvent的code字段表示了WebSocket断开的原因。
可以从该字段中分析断开的原因。
CloseEvent有三个字段需要注意, 通过分析这三个字段,一般就可以找到断开原因:

CloseEvent.code: code是错误码,是整数类型
CloseEvent.reason: reason是断开原因,是字符串
CloseEvent.wasClean: wasClean表示是否正常断开,是布尔值。一般异常断开时,该值为false

image.png

参考

web 端连接 WebSocket 服务经常性 1006 断开
https://learnku.com/php/t/66088

WebSocket断开原因、心跳机制防止自动断开连接
https://www.bbsmax.com/A/1O5E3y7bz7/

网络编程-基于Websocket聊天室(IM)系统
https://blog.csdn.net/zhizhengguan/article/details/122115739
https://www.shuzhiduo.com/A/E35p0Z2R5v/#24%E5%BF%83%E8%B7%B3%E6%9C%BA%E5%88%B6%E8%A7%A3%E5%86%B3%E7%BD%91%E7%BB%9C%E7%9A%84%E4%B8%8D%E7%A1%AE%E5%AE%9A%E6%80%A7

上一篇下一篇

猜你喜欢

热点阅读