一种通过xmpp实现离线消息推送的方法及系统

公开号 : CN 104243271 A

专利申请号 : CN 201310230953

申请人 : 深圳中兴网信科技有限公司

【摘要】

本发明公开了一种通过XMPP实现离线消息推送的方法,在XMPP服务器与APNS服务器之间设置IOS消息模块;IOS消息模块接收XMPP服务器发来的离线消息,从APNS服务器获取所述离线消息对应的IOS设备的设备令牌,将包含设备令牌的离线消息提醒或离线消息发送给APNS服务器。本发明同时还公开了一种通过XMPP实现离线消息推送的系统,应用本发明的方案,保证了用户可以即时查看离线消息,同时避免了搭建消息转发器或消息服务器带来的工作量大、自主开发、成本高、中间环节复杂、以及稳定性差等弊端。

【技术领域】

[0001] 本发明涉及移动通信中离线消息传输技术,特别是涉及一种通过可扩展消息处理现场协议(XMPP,Extensible Messaging and Presence Protocol)实现离线消息推送的方法及系统。

【背景技术】

[0002] 移动通信是指通信中的移动一方通过无线的方式在移动状态下进行的通信,这种通信方式可以借助于有线通信网,通过通信网实现与世界上任何国家任何地方任何人进行通信,因此,从某种程度上说,移动通信是无线通信和有线通信的结合。目前,移动通信已从模拟通信发展到了数字移动通信阶段,未来移动通信的目标是,能在任何时间、任何地点、向任何人提供快速可靠的通信服务,因此,如何实现即时通信和离线消息的推送受到越来越多的关注,这导致XMPP协议在即时通信和离线消息的推送领域的地位变得更加重要。

[0003] XMPP协议是目前主流四种即时消息协议中最灵活、最受欢迎的协议,广泛地应用于即时消息以及在线现场探测层面,很多即时消息工具采用XMPP来实现离线消息的发送功能,如GoogleGTalk、还有基于Jabberd的很多组织,XMPP事实上已经成为頂工具采用的首要标准协议。

[0004] 苹果推送通知服务(APNS, Apple Push Notificat1n Service),是苹果公司利用自己专门的APNS服务器接收消息发送方的应用服务器需要被推送的信息,并将此消息推送至指定的1S设备。

[0005] 由于APNS服务器在处理和架构上不同于以XMPP为核心的消息服务器,目前XMPP服务器还没有实现与APNS服务器离线消息的对接,即两者的离线消息是隔离的。现有技术中,基于XMPP的架构实现安卓(Android)1S两种设备间离线消息推送有两种解决方案:

[0006] 第一种解决方案是,通过消息转发器实现离线消息的通信。如图1所示,消息转发器通过Android平台连接XMPP服务的消息服务器,通过1S平台连接APNS服务器;进一步的,消息服务器连接Android设备,如Android系统的手机终端,APNS服务器连接1S设备,如苹果手机终端;相应的,实现离线消息推送的方法包括:

[0007] 步骤AlAndroid设备如Android系统的手机终端,将离线消息发送至消息转发器;

[0008] 步骤A2,消息转发器通过1S平台将离线消息转发至APNS服务器;

[0009] 步骤A3APNS服务器接收离线消息,并将收到的离线消息推送至1S设备如苹果手机终。

[0010] 但是,此实现方案存在的缺陷是:一方面,消息转发器开发的工作量大,稳定性、可靠性都有待验证;另一方面,对于已经直连XMPP作为消息服务器的应用架构会产生比较大的冲击。

[0011] 第二种解决方案是,搭建通信双方自己的消息服务器,在应用(APP)层面实现消息通信,如图2所示。具体实现离线消息推送的方法包括:

[0012] 步骤BI, Andro i d设备如Andro i d系统的手机终端,将离线消息同步发送给通信双方搭建的消息服务器;

[0013] 步骤B2,消息服务器接收离线消息,并将收到的离线消息进行格式转换,转化成1S设备可以识别的代码,之后将格式转换后的离线消息同步转发给1S设备如苹果手机终端;

[0014] 步骤B3,苹果手机终端收到离线消息后对消息进行处理,发送确认(ACK)消息至所述消息服务器;

[0015] 步骤B4,消息服务器接收ACK消息,并转发ACK消息给Android设备,至此消息发送成功。

[0016] 但是,此实现方案存在的缺陷是:一方面,消息服务器工作量大,完全自主开发,代价非常高;另一方面,消息服务器难以与主流消息服务器兼容,使得第三方系统无法使用其消息服务。

[0017] 显然,现有技术中还没有合适的解决方案用于实现不同协议终端设备之间的离线消息推送。

发明内容

[0018] 有鉴于此,本发明的主要目的在于提供一种通过XMPP实现离线消息推送的方法及系统,能大大降低开发工作量,并能避免稳定性和可靠性无法保障、以及拓展性和兼容性差的问题。

[0019] 为达到上述目的,本发明的技术方案是这样实现的:

[0020] 本发明提供了一种通过XMPP实现离线消息推送的方法,在XMPP服务器与APNS服务器之间设置1S消息模块;该方法还包括:

[0021] 所述1S消息模块接收XMPP服务器发来的离线消息,并从APNS服务器获取所述离线消息对应的1S设备的设备令牌,将包含设备令牌的离线消息提醒或离线消息发送给APNS服务器。

[0022] 上述方案中,该方法进一步包括:APNS服务器将包含设备令牌的离线消息提醒或离线消息推送至1S设备。

[0023] 上述方案中,所述获取离线消息对应的1S设备的设备令牌包括:

[0024] 1S消息模块向APNS服务器发送获取设备令牌的请求,所述请求中携带有离线消息对应的1S设备的设备标识;APNS服务器向1S消息模块返回所述离线消息对应的1S设备的设备令牌;10S消息模块接收APNS服务器返回的设备令牌。

[0025] 上述方案中,该方法还包括:设置消息推送阈值;

[0026] 所述1S消息模块将包含设备令牌的离线消息提醒或离线消息发送给APNS服务器包括:10S消息模块对XMPP服务器发来的离线消息的大小进行判断,若所述离线消息的大小大于消息推送阈值,则1S消息模块生成所述离线消息对应的离线消息提醒,将包含设备令牌的离线消息提醒发送给APNS服务器;若所述离线消息的大小小于等于消息推送阈值,则1S消息模块不对所述离线消息做处理,直接将包含设备令牌的离线消息推送给APNS服务器。

[0027] 上述方案中,该方法进一步包括:1S设备离线设置次资源优先级。

[0028] 本发明还提供了一种通过XMPP实现离线消息推送的系统,该系统包括:XMPP服务器、1S消息模块和APNS服务器;其中,

[0029] XMPP服务器,用于在1S设备离线时,将接收到的离线消息转发至1S消息模块;

[0030] 1S消息模块,用于接收XMPP服务器发来的离线消息,并从APNS服务器获取所述离线消息对应的1S设备的设备令牌;将包含设备令牌的离线消息提醒或离线消息发送给APNS服务器;

[0031] APNS服务器,用于接收1S消息模块发送的获取设备令牌请求,并向1S消息模块发送所述离线消息对应的1S设备的设备令牌;还用于接收1S消息模块发来的包含设备令牌的离线消息提醒或离线消息,并将所述包含设备令牌的离线消息提醒或离线消息推送至1S设备。

[0032] 上述方案中,该系统还包括终端设备,用于将发往1S设备的消息发送至XMPP服务器。

[0033] 上述方案中,该系统还包括1S设备,用于接收APNS服务器推送的包含设备令牌的离线消息提醒或离线消息。

[0034] 上述方案中,所述1S消息模块从APNS服务器获取所述离线消息对应的1S设备的设备令牌包括:

[0035] 1S消息模块向APNS服务器发送获取设备令牌请求,所述请求中携带有离线消息对应的1S设备的设备标识;APNS服务器向1S消息模块返回所述离线消息对应的1S设备的设备令牌;10S消息模块接收APNS服务器返回的设备令牌。

[0036] 上述方案中,所述1S消息模块,还用于对XMPP服务器发来的离线消息的大小进行判断,若所述离线消息的大小大于消息推送阈值,则1S消息模块生成所述离线消息对应的离线消息提醒,将包含设备令牌的离线消息提醒发送给APNS服务器;若所述离线消息的大小小于等于消息推送阈值,则1S消息模块不对所述离线消息做处理,直接将包含设备令牌的离线消息推送给APNS服务器。

[0037] 本发明所提供的通过XMPP实现离线消息推送的方法及系统,在XMPP服务器和APNS服务器之间设置1S消息模块,用于接收XMPP服务器发来的离线消息,并通过APNS服务器向1S设备发送离线消息提醒或直接推送离线消息;本发明所采用的离线消息推送机制,可使用户即时获悉是否有离线消息待接收,并发送离线消息提醒、或直接推送离线消息给用户的终端设备,从而能保证用户可以即时查看离线消息;并且,本申请也避免了搭建消息转发器或消息服务器所带来的工作量大、自主开发、成本高、中间环节复杂、以及稳定性差等弊端。

[0038] 本发明中所设置的1S消息模块遵循XMPP协议,且基于XMPP服务器的次优先级工作,也就是说,对于XMPP服务器而言,1S设备在线优先级最高,离线优先级次之;如此,可充分利用XMPP服务器的资源优先级功能。

[0039] 此外,本发明单独设置的功能模块-1OS消息模块,本质上既是XMPP服务器的客户端,又是APNS服务器的消息源,当消息处理的瓶颈位于1S消息模块时,如当前的1S消息模块性能待改善或者同一时间内众多离线消息到达1S消息模块时,则只需增加1S消息模块服务器的数量即可以解决此消息处理瓶颈,因此本发明极易实现后续扩展;当有性能更佳的XMPP服务器时,只需用该性能更佳的XMPP服务器替换原有的XMPP服务器,即可实现本发明的处理性能的改善,不需要对1S消息模块做任何改动,因此本发明为后续兼容提供了保障;此外,只要第三方系统消息是基于XMPP协议实现的,则1S消息模块与之集成的代价就很小,而且能保障稳定性及集成后的性能。因此1S消息模块可使后续扩展、兼容以及与第三方系统的消息集成非常有保障,使系统实现平滑升级,且代价微小。

【附图说明】

[0040] 1为现有技术不同系统设备间离线消息推送方案一的实现原理示意图;

[0041] 2为现有技术不同系统设备间离线消息推送方案二的实现原理示意图;

[0042] 3为本发明通过XMPP实现离线消息推送的方法处理流程示意图;

[0043] 4为本发明通过XMPP实现离线消息推送的系统组成结构示意图。




【具体实施方式】

[0044] 本发明的基本思想是:XMPP服务器和APNS服务器之间设置1S消息模块,用于接收XMPP服务器发来的离线消息,并通过APNS服务器向1S设备发送离线消息提醒或直接推送离线消息。

[0045] 这里,所述1S消息模块可以设置于消息服务器中,作为一个功能模块;也可以单独设置于消息服务器之外,作为一个独立的设备。

[0046] 对于所述离线消息,会针对消息大小预先设置一个消息推送阈值,如果离线消息的大小超过消息推送阈值,则1S消息模块仅通过APNS服务器向1S设备发送离线消息提醒;否则,1S消息模块可以通过APNS服务器向1S设备直接推送离线消息。

[0047] 下面结合附图及具体实施例对本发明再作进一步详细的说明。

[0048] 3为本发明通过XMPP实现离线消息推送的方法处理流程示意图,如图3所示,本发明通过XMPP实现离线消息推送的方法包括以下步骤:

[0049] 步骤101 =1S消息模块接收XMPP服务器发来的离线消息;

[0050] 本发明中,在XMPP服务器和APNS服务器之间设置1S消息模块,所述1S消息模块在1S设备处于离线状态时接收XMPP服务器发来的离线消息;

[0051] 具体的,发往1S设备的消息到达XMPP服务器时,若1S设备离线,所述消息即成为离线消息,则启动1S消息模块接收所述离线消息;

[0052] 本发明中,所述XMPP服务器对自身资源设置有优先级,1S设备在线优先级最高,1S设备离线优先级次之;相应的,1S消息模块通过次资源优先级调度启动工作。

[0053] 步骤102:10S消息模块从APNS服务器获取所述离线消息对应的1S设备的设备令牌;

[0054] 这里,所述APNS服务器中存储有各个1S设备的设备信息,包括设备令牌。

[0055] 具体的,所述获取离线消息对应的1S设备的设备令牌包括:

[0056] 1S消息模块向APNS服务器发送获取设备令牌的请求,所述请求中携带有离线消息对应的1S设备的设备标识;APNS服务器向1S消息模块返回所述离线消息对应的1S设备的设备令牌;1S消息模块接收APNS服务器返回的设备令牌,并供后续APNS服务器调用。

[0057] 步骤103:10S消息模块将包含设备令牌的离线消息提醒或离线消息发送给APNS服务器;

[0058] 这里,1S消息模块会预先设置一个消息推送阈值,用于确定向APNS服务器发送离线消息提醒还是直接发送离线消息;

[0059] 具体的,本步骤中,1S消息模块对XMPP服务器发来的离线消息的大小进行判断,若所述离线消息的大小大于消息推送阈值,则1S消息模块生成所述离线消息对应的离线消息提醒,将包含设备令牌的离线消息提醒发送给APNS服务器;若所述离线消息的大小小于等于消息推送阈值,则1S消息模块不对所述离线消息做处理,直接将包含设备令牌的离线消息推送给APNS服务器。

[0060] 这里,所述消息推送阈值指1S消息模块能够推送的最大消息的大小。

[0061] 步骤104 =APNS服务器将所述包含设备令牌的离线消息提醒或离线消息推送至1S设备。

[0062] 这里,所述推送会根据1S设备的连接状态确定何时推送,如果运行于1S设备上的应用离线而1S设备仍然联网,则APNS服务器可实现即时地将离线消息提醒或离线消息推送给1S设备;如果1S设备未联网,则需要1S联网后,APNS服务器再实现推送。

[0063] 4为本发明通过XMPP实现离线消息推送的系统组成结构示意图,如图4所示,该系统包括=XMPP服务器421S消息模块43APNS服务器44 ;其中,

[0064] XMPP服务器42,用于在1S设备离线时,将接收到的离线消息转发至1S消息模块43 

[0065] 1S消息模块43,用于接收XMPP服务器42发来的离线消息,并从APNS服务器44获取所述离线消息对应的1S设备的设备令牌;之后,将包含设备令牌的离线消息提醒或离线消息发送给APNS服务器44 

[0066] 具体的,所述1S消息模块43APNS服务器44获取所述离线消息对应的1S设备的设备令牌包括:

[0067] 1S消息模块43APNS服务器44发送获取设备令牌请求,所述请求中携带有离线消息对应的1S设备的设备标识;APNS服务器441S消息模块43返回所述离线消息对应的1S设备的设备令牌;10S消息模块43接收APNS服务器44返回的设备令牌,并供后续APNS服务器调用。

[0068] 进一步的,1S消息模块43会预先设置一个消息推送阈值;相应的,1S消息模块43还用于,对XMPP服务器42发来的离线消息的大小进行判断,若所述离线消息的大小大于消息推送阈值,则1S消息模块43生成所述离线消息对应的离线消息提醒,将包含设备令牌的离线消息提醒发送给APNS服务器44;若所述离线消息的大小小于等于消息推送阈值,则1S消息模块43不对所述离线消息做处理,直接将包含设备令牌的离线消息推送给APNS服务器44

[0069] APNS服务器44,用于接收1S消息模块43发送的获取设备令牌请求,并向1S消息模块43发送所述离线消息对应的1S设备的设备令牌;还用于接收1S消息模块43发来的包含设备令牌的离线消息提醒或离线消息,并将所述包含设备令牌的离线消息提醒或离线消息推送至1S设备。

[0070] 该系统进一步包括终端设备41,用于将发往1S设备的消息发送至XMPP服务器 42 

[0071] 这里,若1S设备离线,则所述消息即成为离线消息。

[0072] 该系统还包括1S设备45,用于接收APNS服务器44推送的包含设备令牌的离线消息提醒或离线消息。

[0073] 4所示系统中,所述XMPP服务器42对自身资源设置有优先级,1S设备在线优先级最高,1S设备离线优先级次之;相应的,1S消息模块43通过次资源优先级调度启动工作。

[0074] 因为XMPP协议只是一个标准,并不包含具体的实现过程,实现的过程可以在各平台下独立完成,即可以运行基于XMPP协议的应用程序在不同的平台下,例如服务器、个人计算机、手持设备、甚至运行于信息采集、感应设备之上,因此本申请中的终端设备可扩展至多种不同平台。

[0075] 以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值