移动端IM实践:WhatsApp、Line、微信的心跳策略分析

WhatsApp


在不支持GCM的设备上,采用和微信类似的长连接+心跳策略,WIFI和手机网络下的心跳间隔都为4分45秒,心跳5次后,主动断开连接再重连。

在支持GCM的设备上,主要靠GCM来激活WhatsApp,WhatsApp启动后,会建立一个与服务器的长连接,直接通过此长连接发送Push消息,这个长连接10分钟无消息就会主动断掉,且这十分钟内不做心跳,断掉后WhatsApp客户端和它的服务器不再有连接。当有消息时候,服务器发现没有长连接会发送GCM消息,手机收到GCM消息后,会重新建立长连接来收取消息,10分钟无消息会再断开,如此循环。

Line


从测试中发现Line在国内、台湾、美国使用了不同的策略。

1、美国(使用GCM):
启动时,会保持7分钟心跳(CDMA2000网络)维持长连接半小时,之后主动断开长连接。当有消息时,服务器会发送GCM消息,Line客户端接收到GCM消息后,重新建立长连接,并再次用心跳维持半个小时。
2、国内(不使用GCM):
在国内,同样帐号在相同网络,不同的手机上测出了两种策略:
- 长连接+心跳策略(在Galaxy S3上使用),心跳间隔WIFI下是3分20秒,手机网络是7分钟。
- 轮询策略(在红米和Nexus S上使用),如下图所示。与心跳策略的主要区别用红色标出,客户端在长连接建立后也会定时发送请求,Server会回复并且同时关闭长连接。客户端等待轮询间隔T1后再次建立TCP连接。Line会根据手机的活跃状态动态调整T1,调整范围是从最小1分到最大到2小时半。而长连接存活时间T2比较固定,在WIFI下4分钟,手机网络7分钟。如果在T2时收到新消息会延长T2的时间。
<ignore_js_op>移动端IM实践:WhatsApp、Line、微信的心跳策略分析_QQ20160303-0.png 

3、台湾(不使用GCM):
从IBG同事win和guang提供的测试数据中看到,台湾使用的策略跟国内的轮询策略类似。

微信


微信没有使用GCM,自己维护TCP长连接,使用固定心跳(编者注:在此文章《移动端IM实践:实现Android版微信的智能心跳机制》发布前,微信使用的是固定心跳策略)。

心跳典型值

 

 WhatsAppLineGCM
WIFI4分45秒3分20秒15分钟
手机网络4分45秒7分钟28分钟

 

Line、WhatsApp、微信消息推送策略的优点


a)微信:当前心跳间隔比竞品短,所以微信在新消息提醒上会最及时。
b)使用GCM:Line和WhatsApp使用GCM策略的最大优点就是省电,以及减轻系统负荷(减少后台应用数目)。
c)Line:Line的轮询策略,优点是当Line处于活跃状态时,及时收消息。当Line处于不活跃状态时,省电。

Line、WhatsApp微信消息推送策略的不足


a)微信当前心跳频率相对竞品较大,在耗电、耗流量,占用信令通道等方面有所影响。
b)Line的轮询策略,导致的问题是消息可能会延迟接收,测试发现最大延迟间隔到2.5小时。
c)WhatsApp和Line使用Push拉起一个定时长连接策略,缺点是要依赖Google的Push服务,如果Google的Push服务不稳定,消息也会延迟接收。
d)在国内的移动和联通2G网络下,由于运营商的策略,GCM长连接频繁断连,WhatsApp的Push消息很不及时,体验非常差。

转载于:https://www.cnblogs.com/powerwu/articles/9718706.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值