关闭

MQTT协议(二):推送篇

651人阅读 评论(0) 收藏 举报
分类:

MQTT协议(二):推送篇


如果觉得我写的还不错,请关注我的新浪微博@杨浩宇-小橘爷,最新文章即时推送~
MQTT协议(一):理论篇
MQTT协议(三):实战篇

主流推送方案:

APNS(Apple Push Notification Service)和GCM(Google Cloud Messaging)

APNS和GCM是iOS和Android两大阵营提出的官方推送方案,这两者的技术架构较为相似。都是由系统来统一的维护一个长连接,所有的APP统一发送心跳和接收推送。

APNS使用的方便性毋庸置疑,但是GCM却在国内举步维艰,具体原因有以下三个:

1、Google与我国政府交恶,导致GMS(Google Mobile Service)在国内无法正常使用,而GCM是依赖于GMS的,所以无法顺利使用。

2、由于国内2G和移动3G的NAT超时时间都小于GCM心跳时间(28分钟),TCP长连接必然无法保活,每次都要等28分钟心跳失败重连后才能收到Push。

3、某些运营商可能限制了5228端口,移动3G/2G下,发现几乎无法连接上GCM服务器,也就无法获得GCM通知,WhatsApp放后台10分钟后,经常很长时间都收不到Push消息。

XMPP

XMPP是一种基于标准通用标记语言的子集XML的协议,它继承了在XML环境中灵活的发展性。因此,基于XMPP的应用具有超强的可扩展性。经过扩展以后的XMPP可以通过发送扩展的信息来处理用户的需求,以及在XMPP的顶端建立如内容发布系统和基于地址的服务等应用程序。而且,XMPP包含了针对服务器端的软件协议,使之能与另一个进行通话,这使得开发者更容易建立客户应用程序或给一个配好系统添加功能。

XMPP的优点是:协议成熟,强大,可扩展性强,并且有成熟的开源方案。

XMPP的缺点是:信息冗余量大(信息的格式是 XML),因而费流量,费电。

MQTT

MQTT的具体概念已经在上一篇博客中详细的介绍了:MQTT协议(一):理论篇 。

MQTT的优点是:协议简洁轻巧,数据冗余量低。并且支持的设备从智能硬件到智能手机无所不包。

MQTT的缺点是:服务器端实现难度大,虽然已经有了C++版本的服务端组件,但是并不开源。而且在推送数量较大时如何处理并发是十分考验后台人员的技术水平的。

HTTP轮询

HTTP轮询就是在一个给定的时间间隔后,定时向服务器发送请求,查看是否有新的数据。

HTTP轮询的优点是:实现简单、可控性强,部署硬件成本低。

HTTP轮询的缺点是:实时性差,只有时间到了才会向服务器查看是否有新的数据。两次请求之间的时间间隔过大,则失去了即时推送的意义。但如果设置的时间间隔较短的,又会费电费流量。

第三方推送

在推送这一分支领域有许许多多的第三方推送服务,例如:极光,个推等。

优点是集成方便。

缺点是大量推送数据后,付费服务是在所难免。

林林总总的推送方案大体就这些了,但是对于iOS开发者而言,后台保持长连接的权限极其难以获取,如果处理不当甚至会被APP Store的审核人员打回原形。所以,还是老老实实的使用APNS或第三方推送的服务吧~

From: http://www.jianshu.com/p/6ef247b55a05

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:167141次
    • 积分:3280
    • 等级:
    • 排名:第10335名
    • 原创:119篇
    • 转载:104篇
    • 译文:18篇
    • 评论:5条
    最新评论