Android选择mqtt推送项目的案例分享

选择MQTT前传:

之前项目中使用的是百度推送,最开始觉得还不错,集成到项目中很简单,只需要一个增加一个jar包,然后修改几个类,在百度推送指定的位置启动百度推送服务就可以,但是随着项目的不断推进和对于推送质量的不断提高,越来越发现需要更精确的推送到达率,但是对于百度推送这种免费的第三方推送服务,你作为免费使用者是没有办法要求百度做到100%的,当然从技术层面上讲,百度是可以做到的,但是现状在于很多使用第三方推送的项目对于推送的质量要求不高,很多是作为系统消息或者新闻推送,所以即使有些没有推送到,没不是什么大问题,所以我们不得不开始寻找新的推送方案。


选择MQTT的理由:

很早之前就了解过关于推送方面的东西,想google自家的C2DM、极光推送、百度推送、MQTT、基于XMPP协议的推送等等,对于国内用户来说,google的服务在国内几乎不可用,因为说不定什么时候就被墙了,所以必须放弃,第三方推送的不保证到达率让我们不得不放弃、基于XMPP协议的推送感觉不是很靠谱,所以最终确定使用MQTT作为我们的下一步的推送策略


MQTT的来源和介绍

从了解的资料方面看,MQTT是IBM开发的一款轻量级的推送接收协议,在服务器和客户端建立一个Socket连接,并且定时去发送pinreq请求来确认连接是否正常,每次请求包含的字节数超级少,用于节省流量,当连接断开时会自动重新连接服务器,非常的方便


基于MQTT协议的项目


有一个mqtt的官方网站(http://mqtt.org)

其中介绍了几个mqtt的项目,除了几个不能正常访问的项目之外,还有paho和fusesource,最初开始用的是paho,但是经过一周的测试发现,paho简直太难用了,底层代码写的特别乱不说,在demo的调用中还写了大量的代码,结果测试是非常的不好,并且当网络断开和连接时,自动重连机制也不完美,所以最后我们不得不放弃paho项目,虽然当帮助我们完成了最基本的连接服务器,断开服务器功能;接下来说fusesource,之前也下载过来源代码,但是由于当时发现源代码中MQTT类中一个地方报错,是由于引用了不存在的类 的变量,所以后来就没在用它,这里我要说的是,这是我的错误,因为在github上关于fusesource的介绍中介绍那个报错的参数,其实它的default数值是8,接下来说这次的收获,我不得不承认自己的英文很蓝,后来还是在头的提醒下才发现自己又理解错误了,因为github上明确写明如果部署在其他项目中,可以直接使用uber的jar文件,而且无需关心那些源代码,当然有一个callbackapitest的test类还是要看的,接下来的测试有点小挫折,那就是每次连接后会自动断开,然后反复尝试连接,又断开,不过最后发现是由于服务器发现subscribe了一个不存在的topic后主动断开了mqtt的连接,所以后面的测试非常的顺利,各种重连backoff机制也都非常好用,希望想尝试mqtt推送方案的人可以看看,下面时fusesouce mqtt client在github上的地址https://github.com/fusesource/mqtt-client

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值