IM网络层设计

  • 协议层设计
  1. flag
  2. version
  3. command
  4. size
  5. header
  6. body
  • 架构设计
  1. 最底层: socket层,做最底层的TCP连接并且对接协议,包括消息的解包
  2. 中间层: 连接管理层, 用于对底层连接做管理。包括连接的ping策略,重连,握手,连接性能统计。
  3. 最上层,直接对接业务的一层。包括连接管理层配置信息拉取,日志输出,对外接口等等。

问题记录:

1. windows上面如果网线断开或者关闭wifi设置,socket层read函数是可以感知到的,但是在ios和android上如果手动断网并不能立刻触发read函数返回,可能是移动端在socket层没有对这种情况进行处理。

2. 移动端在应用切到后台后可能会将线程挂起,导致所有的逻辑不再运行。

对于以上两种情况的处理方法:

ios或者android系统通知网络变化时通知socket层进行断开重连调整,可以细化重连策略。

无网->有网: 立即调用正常的重连策略

有网->无网: 间隔时间更长的重连策略

后台->前台: 在底层未感知到网络断开状态下(ping超时等方法),判断最后一条消息距现在的时间一般是4分钟, 就要启动重连机制。这样如果在后台没有感知到断开的情况下,可以立即进行重连。为什么是4分钟,因为一般情况下ios后台应用超过4分钟就会被挂起。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章