中年|Web端即时通讯实践干货:如何让WebSocket断网重连更快速?( 四 )


上述第2)种方案 , 如上图中的右侧所示 , 随重试次数的增多 , 重连间隔也会变大 。 这两种方式配合使用 , 更为合理 。
除此之外 , 还可以结合业务逻辑 , 根据成功重连上的可能性适当的调整间隔 , 如网络未连接时或应用在后台时重连间隔可以调大一些 , 网络正常的状态下可以适当调小一些等等 , 加快重连上的速度 。
8、本文小结最后总结一下 。
本文将WebSocket断网重连逻辑细分为三个步骤:
1)确定何时需要重连;
2)断开旧连接;
3)发起新连接 。
然后分别分析了在WebSocket的不同状态下、不同的网络状态下 , 如何快速完成这个三个步骤 。
过程具体总结就是:

1)首先:通过定时发送心跳包的方式检测当前连接是否可用 , 同时监测网络恢复事件 , 在恢复后立即发送一次心跳 , 快速感知当前状态 , 判断是否需要重连;
2)其次:正常情况下由服务器断开旧连接 , 与服务器失去联系时直接弃用旧连接 , 上层模拟断开 , 来实现快速断开;
3)最后:发起新连接时使用退避算法延迟一段时间再发起连接 , 同时考虑到资源浪费和重连速度 , 可以在网络离线时调大重连间隔 , 在网络正常或网络由offline变为online时缩小重连间隔 , 使之尽可能快地重连上 。
以上就是我关于如何实现WebSocket快速重连的技术分享 , 欢迎留言与我探讨 。
9、参考资料[1] RFC 6455 文档
[2] 新手快速入门:WebSocket简明教程
[3] WebSocket详解(四):刨根问底HTTP与WebSocket的关系(上篇)
[4] WebSocket详解(五):刨根问底HTTP与WebSocket的关系(下篇)
[5] WebSocket详解(六):刨根问底WebSocket与Socket的关系
附录:更多Web端即时通讯资料《新手入门贴:史上最全Web端即时通讯技术原理详解》《Web端即时通讯技术盘点:短轮询、Comet、Websocket、SSE》《SSE技术详解:一种全新的HTML5服务器推送事件技术》《Comet技术详解:基于HTTP长连接的Web端实时通信技术》《socket.io实现消息推送的一点实践及思路》《LinkedIn的Web端即时通讯实践:实现单机几十万条长连接》《Web端即时通讯技术的发展与WebSocket、Socket.io的技术实践》《Web端即时通讯安全:跨站点WebSocket劫持漏洞详解(含示例代码)》《开源框架Pomelo实践:搭建Web端高性能分布式IM聊天服务器》《使用WebSocket和SSE技术实现Web端消息推送》《详解Web端通信方式的演进:从Ajax、JSONP 到 SSE、Websocket》《MobileIMSDK-Web的网络层框架为何使用的是Socket.io而不是Netty?》《理论联系实际:从零理解WebSocket的通信原理、协议格式、安全性》《微信小程序中如何使用WebSocket实现长连接(含完整源码)》《八问WebSocket协议:为你快速解答WebSocket热门疑问》《快速了解Electron:新一代基于Web的跨平台桌面技术》《一文读懂前端技术演进:盘点Web前端20年的技术变迁史》《Web端即时通讯基础知识补课:一文搞懂跨域的所有问题!》《Web端即时通讯实践干货:如何让你的WebSocket断网重连更快速?》&gt&gt 更多同类文章 ……
(本文同步发布于:http://www.52im.net/thread-3098-1-1.html)
【来源:即时通讯技术分享】
声明:转载此文是出于传递更多信息之目的 。 若有来源标注错误或侵犯了您的合法权益 , 请作者持权属证明与本网联系 , 我们将及时更正、删除 , 谢谢 。邮箱地址:newmedia@xxcb.cn
【中年|Web端即时通讯实践干货:如何让WebSocket断网重连更快速?】


推荐阅读