websocket重连机制方案

  socket本身没有提供重连机制,websocket也是一样。所以重连是自己做的。

  要实现websocket重连机制,首先要分析websocket的工作环境。socket的接收和发送都是阻塞线程的,所以websocket一般都是用两个线程分别去负责接收和发送消息。
这里就以接收和发送都是异步为前提实现重连。

  socket 宏观的链接步骤为:connect----connected  异步。

  socket 宏观的断开链接步骤为:disconnect----disconnected  异步。

如果给websocket定义生命周期的话,我是这样定义的。


  所以websocket只能是在onlive(connected之后,disconnectting之前)期工作。我们怎么样知道websocket现在的状态呢?定义websocket的状态:

  onconnectting (connectting之后,connected之前),      用socket三次握手判断。

  onconnect     (connected之后,disconnectting之前)    给服务器发送消息,已发送消息和接收消息的时间差为基准判断。

  disconnectting(disconnecting之后,disconnected之前)  socket断开连接机制为基准。

  ondisconnect (disconnected之后,connectting之前)     业务中之前保存websocket的状态为基准。

原则就是做到websocket的状态不允许重复,生命执行流程不能倒置。

因为onconnectting、onconnect、disconnectting都是异步,所以有必要分别用一个同步的参数记录三个时期的状态。当处于onconnectting时期时,不做onconnect、disconnectting。其他状态也是同样的原则。

遵循自己定义的websocket生命周期原则,那么重连只是重走一遍websocket的生命周期而已。


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值