一种基于xmpp的可靠消息推送方法

文档序号:9238138阅读:915来源:国知局
一种基于xmpp的可靠消息推送方法
【技术领域】
[0001] 本发明涉及计算机网络数据传输技术领域,具体涉及一种基于XMPP的可靠消息 推送方法。
【背景技术】
[0002] 在当前环境下,智能手机常常处于未联网状态,实时推送的信息常常在推送过程 中被丢失,端到端的信息推送的可靠性很难保证,因此需要一个可靠的信息推送机制来保 证所有信息能够最终被推送到目的终端,即使传输过程中有终端曾处于未联网状态。本方 法为一种基于XMPP协议和Openfile中间件服务器消息列队缓存的可靠信息推送方法,能 够解决不稳定网络环境中智能终端消息推送丢失的问题。
[0003] XMPP的前身是Jabber,一个开源形式组织产生的网络即时通信协议。 XMPP(ExtensibleMessagingandPresenceProtocol)协议基于XML的数据模型,是一种 用来在两个地点之间传递小型的结构化数据段的协议。XMPP协议传输的是与即时通讯相 关的指令。传统方法中命令采用二进制的形式发送(比如QQ),或用纯文本指令加空格加 参数加换行符的方式发送(比如MSN)。而XMPP传输的即时通讯指令将协议的形式变成了 XML格式的纯文本。XMPP的核心部分是一个在网络上分片段发送XML的流协议。这个流协 议是XMPP的即时通讯指令的传递基础,XMPP用TCP传的是XML流。通过XML,可以构建一 个网关来实现XMPP网络与非XMPP网络之间无法实现互联互通的问题,有助于增强即时通 信系统问的互通性。XML是一种可读的文本格式,具有开放、灵活、轻便、易于创建和阅读的 优势。
[0004] 基于XMPP协议的典型XML消息格式定义如下所示:
[0005]
[0006] 其中<presence>元素中的<status/ >定义状态,用以确定用户状态; <message>元素用于两个用户之间发送消息,<body></body>中为消息内容。
[0007] Openfire是基于XMPP协议的开源实时协作服务器,可用于易构建高效率的通信 服务器,单台服务器能支持上万并发用户,并支持基于Web的控制台。由于采用XMPP协议, 各种采用XMPP协议的客户端均能连接Openfire服务器。Openfire不仅自带轻型数据库, 且支持与Orcle,Mysql等主流关系型数据库的集成。
[0008] 然而不论是XMPP,还是Openfire服务器,都是专注于消息发送格式和方式,并没 有机制能保证消息是否可靠传送到目的地。
[0009] Openfire服务器本身支持点到点的文件传输,即为两客户终端建立有效连接后, 直接传输文件流;对于离线文件的传输,Openfire也有自己的实现机制,即拦截离线文件, 并将该文件存储到服务器上,同时在数据库中维护该文件的相关信息等,待客户终端在线 后再传输过去。Openfire的这种文件传输机制,从效率上来说,高并发访问情况的出现很可 能大大降低了Openfire服务器的服务效率;从安全性上来说,如果一旦Openfire服务器崩 溃,不仅是文件信息,甚至文件也都容易丢失。此外,对于离线文件的传输,Openfire服务 器的传输可靠性也不是很好,如果接收方客户终端永久丢失,那么该离线文件就需要永远 存放在服务器中,这样不仅浪费服务器空间,也浪费了Openfire需要维持的监听资源。对 于文件传输部分,为了避免这些弊端,建立专门的服务器用作存储文件的中转站,以可靠的 HTTP协议的方式进行文件上传和下载,而基于XMPP协议的Openfire服务器仅仅作为文件 信息的传输中介。
[0010] 随着移动互联网的快速发展,企业业务场景多样化的增加,对于即时通讯服务的 可靠性的需求也会日益增加。为确保消息以及含附件消息在推送过程中的可靠性,急需一 种高效稳定的基于XMPP的推送方法。

【发明内容】

[0011] 本发明的目的在于提供一种基于XMPP协议的可靠消息推送方法,用于在关键数 据的传输中,确保接收方能收到消息,发送方能确切知道消息是否推送成功。为了实现上述 目的,本发明提供一种基于XMPP协议的,具有完善消息确认的推送机制,包括含有附件的 文本消息和纯文本消息。
[0012] 对于含有附件的文本消息,基于XMPP的可靠消息推送方法将该类消息分为两个 部分,纯文本消息和附件消息。该可靠消息推送方法包括如下过程:
[0013] P1 :客户终端,即消息发送方先与中间件建立连接,中间件服务器通过安全传输层 协议TLS和简单认证与安全层SASL对终端进行身份验证;
[0014] P2:发送方将文字消息和附件消息,按照XMPP协议的要求进行封装,将消息体封 装到XMPP协议规定的Message元素的body节中;在消息发送前,会将该条附件消息存储在 客户终端的数据库中;
[0015] P3 :发送方发送该条消息到中间件服务器,同时,发送方连接HTTP服务器,并通过 终端设备参数进行身份验证,验证通过后,上传文件到HTTP服务器,并建立完整性标识;中 间件服务器中的插件和HTTP服务器进行如下处理:
[0016] 1)中间件服务器将该条消息存入中间件服务器数据库中,并建立文件完整性标 识;
[0017] 2)HTTP服务器监控文件上传情况,有文件上传成功则发送消息给openfire服务 器插件,更新文件完整性标识;
[0018] 3)附件完全上传成功后,HTTP服务器发送消息给中间服务器插件,插件监听到该 消息后将给消息的发送方发送一个回执包,发送方收到这个回执包以后将客户终端数据库 中相应的消息记录删除,表示该条消息的文本和附件分别成功到达中间件服务器和HTTP 服务器,无需再保留;与此同时,HTTP服务器也发送附件的URL路径给中间件服务器插件, 插件接收该消息后与原文本消息整合后存入中间件服务器数据库中;
[0019] 4)中间件服务器判断该条消息的接收方客户终端是否在线,如果在线则将该消息 加入中间件服务器的待发送消息队列中;中间件服务器中有线程依次发送消息队列中的消 息;如果该条消息的接收方不在线,则这条消息会保留在服务器数据库中,当该条消息的接 收方上线时,才会从数据库中调入到待发送队列中;
[0020] P4:接收方整合了的消息后,会给中间件服务器发送回执包。服务器接收到该条消 息对应的回执包后,进行如下操作:
[0021] 1)将该条消息写入中间件服务器数据库的历史表中;
[0022] 2)将该条消息从中间件服务器的待发送消息队列中删除;
[0023] 3)如果中间件服务器未收到回执包,则会一直发送消息给接收方客户终端,直到 收到回应消息;
[0024] P5 :接收方客户终端通过解析该消息,获得文件的下载地址和下载文件。
【附图说明】
[0025] 为了易于说明,本发明由下述的具体实施及附图作以详细描述。
[0026] 图1为含附件文本消息的可靠推送的流程示意图。
【具体实施方式】
[0027] 因含附件文本消息的推送过程,从步骤和机制上包含了纯文本消息的推送过程, 因此,下面仅给出一个示例来描述含附件的文本消息推送的全过程。
[0028] 发送方A通过中间件服务器发送一条含附件的消息给接收方B,附件中包含一张 名为lKFQLU9BEVMU_i.jpg的图片,以及一个名为1KFQLU9BEVMU_2.wav的视频文件。发送 方A通过自身设备参数与中间件服务器建立有效连接,身份验证通过
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1