# 3.6:断线重连恢复通信

作者:小傅哥
博客:https://bugstack.cn (opens new window)

沉淀、分享、成长,让自己和他人都能有所收获!

# 一、前言

在我们日常使用聊天软件进行通信的时候,可能有时候会由于我们的网络环境问题而导致没有网可用,也就是暂时性的断网。那么此时你的聊天软件发送信息,就不能被接收到了。但是当网络恢复后,我们的聊天就又可以继续了。在这里有一个非常重要的保持通信的手段,就是断线重连。以此来保证在网络以及以其他原因导致断线后,可以在网络恢复后,通信也可以随时恢复。如果,没有这样的功能,那么你就需要退出登录再重新连接了。

那么,接下来使我们使用定时监测连接状态的方式,来判断是否保持良好的链接,如果断开则进行重连恢复通信。

# 二、流程设计

  • 从上述流程中我们看到,当网络连接断开以后,会像服务端发送重新链接的请求。
  • 那么在这个发起链接的过程,和系统的最开始链接有所区别。断线重连是需要将用户的 ID 信息一同发送给服务端,好让服务端可以去更新用户与通信管道 Channel 的绑定关系。
  • 同时还需要更新群组内的重连信息,把用户的重连加入群组映射中。此时就可以恢复用户与好友和群组的通信功能。