Android PUSH开源方案解析

在  Android  上,因为 Google 自己实现的 Android 标配的  GCM  (Google Cloud Messaging,原来叫  C2DM ) 在国内基本不可用,所以,对于开发者来说,如果需要 Push功能,怎么样选择成为了一个问题。

到目前为止,国内尚没有完全向开发者免费、开放的 Push 服务可用。国外有几家第三方推送服务,但一般都要收费。所以一般来说,国内的开发者不得不考虑自己来搭建 Push服务。
自己构建 Push服务时,一个比较自然的选择就是,基于开源的现在方案来做。
  • Android实现推送方式解决方案
  • 用androidpn来实现推送
  • Android上实现Push
  • Android Push Notification实现信息推送使用
上面文章提及的方案里,基本上都提及了一个开源的  Android  Push实现:  androidpn
androidpn  它本质上服务器端基于  Openfire ,客户端基于  asmack ,这二者都最  XMPP  IM  开源实现里的二个基本组件,应该说  androidpn  只是把二者更多地结合起来用于做 Push的场景。

笔者做过聊天App,愿意在这里,把基于 XMPP开源系统做 IM 的实践经验分享给大家。
我们做聊天类App,比较自然地,刚开始时也是从研究开源的  XMPP  IM 系统入手。
先说服务器端选择。 Openfire  是一个  XMPP   最古老的开源 IM Server,几乎所有做 IM 的都应该有研究过。但是,它也是最不合适运用到生产的 IM Server,因为:单机并发很有限,集群方案不成熟,代码古老而缺乏及时更新。举个具体的例子: Openfire  的集群组件叫  Connection Manager ,但是,你在  Openfire官方网站 可以看到,最近一个版本是 2009 年 2 月份发布的。可见,基于  Openfire  实现的  androidpn  的根基是不够稳的。

更新:与一个基于 Openfire 做聊天App的朋友交流,他们的用户量比较大,有多个 Openfire 节点做集群。他们对 Openfire 做了很多改造,比如 XMPP 协议交互复杂,要简化;XMPP 协议文本臃肿,则转换为二进制。集群方面,则完全是自己重新开发的。他们最多单点负载 30 万用户。
还有另外二个其实相对好一点的选择:  ejabberd tigase ejabberd  是用  Erlang 语言实现的,懂  Erlang  的用户很少,所以一般不会选。我们当时初步的聊天服务器端选择是  tigase  (Java实现的)。
tigase  作者维护很活跃,集群测试结果能够支撑比较大的容量,这是吸引我们的地方。但经过实际生产运营情况来看,由于其集群方案实现的复杂性,以及单节点容量的有限,我们对支撑到 50 万用户在集群节点上没 有信 心,所以在到达 50 万用户之前,赶快自己开发了替代方案。
再来说 XMPP 协议与客户端的问题:对于移动客户端来说,原始的 XMPP 有些复杂而且流量消耗大。XMPP 本质上协议体都在字符串的 xml 结构上,每个协议都量一堆的字符串,xml里还有很多无意义的结构。另外,XMPP为了其灵活性,就登录这个事情都需要有 N 个来回。对于手机客户端很在乎流量与电量来说,XMPP 比较笨重。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值