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分钟就会被挂起。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值