Android 架构之长连接技术

本文详细探讨了Android长连接的优势,如减少网络延迟、节省带宽和实现服务端主动Push数据。分析了长连接可能断开的情况,如进程被杀、网络切换等,并提出建立稳定长连接的方法,如独立进程、心跳机制和断开重连策略。还介绍了Mars智能心跳机制和数据协议加密,以及长连接通道建设和容灾方案。
摘要由CSDN通过智能技术生成

上文中我们提到了HttpDNS,虽然它比系统DNS更优,但终归还是要做DNS操作。而长连接都是IP直接连接,因此没有DNS相关的开销和耗时。

3. 如果有大量网络请求,可以明显减少网络延时,节省带宽

对于大型App而言,存在繁多密集的网络请求,这中间就会存在非常多次的Http断开和重新连接,浪费了很多时间和带宽。而通过长连接通道的话,则没有这部分耗时,直接传输二进制数据即可,节省了每次连接里Header之类的带宽开销。

4. 服务端主动Push数据到客户端

对于上面提到的微信消息接收等场景,如果需要客户端主动去轮询,则会频繁发起请求,对于服务器会产生很大的负载压力,浪费带宽流量。而通过长连接,服务端可以主动把消息下发给客户端,做到最高实时性,且节省流量。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xuKLZuin-1650012443119)(https://user-gold-cdn.xitu.io/2019/2/12/168df9c1c2ba7115?imageView2/0/w/1280/h/960/ignore-error/1)]

III. 长连接何时会断开?

正常而言,长连接是不会断开的。大家可以自己试一试,两个socket建立连接,只要网络不变、一切正常,那么这两个socket可以一直互相传送数据,不会断开。

但是,在移动网络下,网络状态复杂多变,比如网络线路被切断、服务器宕机等,都会导致长连接中断。除了这些线路异常外,我们需要关注下面几个长连接断开原因:

1. 长连接所在进程被杀

这个很容易理解,如果我们的App切换到后台,那么系统随时可能将我们的App杀掉,这时长连接自然也就随之断开。

2. 用户切换网络

比如手机网络断开,或者发生Wi-Fi和蜂窝数据切换,这时会导致手机IP地址变更。而我们知道,TCP连接是基于IP + Port的,一旦IP变更,TCP连接自然也就失效了,或者说长连接也就相当于断开了。

3. 系统休眠等导致NAT超时

这里对NAT简单解释下,方便有的同学不太了 Android开源项目《ali1024.coding.net/public/P7/Android/git》 解。当手机连接上网络时ÿ

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值