美文网首页
【websocket】WebSocket 连接频繁断开, 错误码

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

作者: Bogon | 来源:发表于2023-03-19 17:16 被阅读0次

    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

    相关文章

      网友评论

          本文标题:【websocket】WebSocket 连接频繁断开, 错误码

          本文链接:https://www.haomeiwen.com/subject/mxsyrdtx.html