java推送技术的选择(一)

image.png

java推送技术

这段时间一直在做关于服务器端向APP端推送消息,查阅了大量的资料,这里做下总结。

关于推送我们常见的推送有APP外推送,APP内推送。APP外推送有各大平台极光,友盟等,而APP内的推送可以用的服务基本需要自己去实现,这里我给大家介绍的就是关于APP内的推送技术,我会再下面的文章介绍如何实现APP内推送。

推送协议分类

这些是我从网上查询出的协议对比

方案1、 使用GCM服务(Google Cloud Messaging)
简介:Google推出的云消息服务,即第二代的G2DM。
优点:Google提供的服务、原生、简单,无需实现和部署服务端。
缺点:Android版本限制(必须大于2.2版本),该服务在国内不够稳定、需要用户绑定Google帐号,受限于Google。

方案2、 使用XMPP协议(Openfire + Spark + Smack)
简介:基于XML协议的通讯协议,前身是Jabber,目前已由IETF国际标准化组织完成了标准化工作。
优点:协议成熟、强大、可扩展性强、目前主要应用于许多聊天系统中,且已有开源的Java版的开发实例androidpn。
缺点:协议较复杂、冗余(基于XML)、费流量、费电,部署硬件成本高。

方案3、 使用MQTT协议(更多信息见: http://mqtt.org/
简介:轻量级的、基于代理的“发布/订阅”模式的消息传输协议。
优点:协议简洁、小巧、可扩展性强、省流量、省电,目前已经应用到企业领域(参考: http://mqtt.org/software ),且已有C++版的服务端组件rsmb。
缺点:不够成熟、实现较复杂、服务端组件rsmb不开源,部署硬件成本较高。

方案4、 使用HTTP轮循方式
简介:定时向HTTP服务端接口(Web Service API)获取最新消息。
优点:实现简单、可控性强,部署硬件成本低。
缺点:实时性差。

从以上协议对比,可以看出第一种国内不可以使用排除,第四种效率太低不建议使用,然后就只有第二,三种可以选择,然后我们继续筛选。

mqtt协议比较灵活,但是需要实现东西太多,如果团队人数足够,时间充足可以自己去实现。
但是团队人太少,我建议使用XMPP实现,因为实现简单,开发快速,成本较小。

使用框架

在公司项目中经过各种讨论对比,最终我们选择了XMPP协议实现的推送服务。

经过对比在公司产品上,使用XMPP时,XMPP的缺点(协议较复杂、冗余(基于XML)、费流量、费电,部署硬件成本高)
可以接受,在消息内容上,只推送少量关键数据,主要的数据还是靠http拉取的方式,并且现在都是4G的情况下,XMPP的协议的缺点都是可以接受。XMPP的很多实现我们都可以使用,减少了我们开发的时间。

xmpp技术介绍

服务端组件Openfire

是开源的、基于可拓展通讯和表示协议(XMPP)、采用Java编程语言开发的实时协作服务器。 Openfire安装和使用都非常简单,并利用Web进行管理。单台服务器可支持上万并发用户。

Java开发库Smack

Smack是一个开源,易于使用的XMPP(jabber)客户端类库。

客户端组件Spark

xmpp 客户端组件,使用XMPP实现的聊天工具。


在项目中我们使用的就是smack库进行XMPP消息的推送,客户端android和ios的实现也有相应的类库。这里不作介绍,我了解的都是服务器端的实现。

详细实现,请看下一篇文章

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android消息推送机制研究1.基于HTTP协议的推送机制基于HTTP协议的推送机制是一种请求-响应模式,由于H...
    GB_speak阅读 4,026评论 0 2
  • 互联网推送服务原理:长连接+心跳机制(MQTT协议)Android推送技术研究Android实现推送方式解决方案a...
    合肥黑阅读 8,235评论 0 12
  • 1.基于HTTP协议的推送机制 基于HTTP协议的推送机制是一种请求-响应模式,由于HTTP协议是应用层的单工通信...
    雅然风懿阅读 9,330评论 1 5
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,328评论 19 139
  • 一大早打开微信,收到远在另外他乡的闺蜜,发来520的红包。里面的字字句句都让我感到满满的幸福。闺蜜曾经说过:拥有一...
    Candy213阅读 2,523评论 0 1