一种xmpp消息的可靠传输方法

文档序号:7857073阅读:396来源:国知局
专利名称:一种xmpp消息的可靠传输方法
技术领域
本发明涉及ー种XMPP消息的可靠传输方法。
背景技术
XMPP (Extensible Messaging and Presence Protocol)是一种以 XML 为基础的开放式即时通讯协议,是经互联网工程工作小组(IETF)通过的互联网标准。XMPP规定了近实时的、可扩展的即时消息(Instant Messaging)传输标准,凭借其巨大的灵活性和开放性在即时通讯市场上占有了很大的份额。若干的计算机行业巨头均采用XMPP协议实现其即时消息通讯服务。
XMPP不关心消息的可靠送达,它仅依靠底层的TCP连接来保证这一点。但是在不稳定的网络中,无法保持长时间的TCP连接。因此TCP仅仅能保证消息的顺序递交,并不能保证消息不被丢失。这ー特点使得在这类网络中使用XMPP格外困难。运行在手机、基站之间的移动通信网络就是ー个典型的不稳定网络,用户的通话、短消息,以及基站切换等动作都可能导致连接中断,进而导致消息丢失。随着移动互联网的逐步发展,对于基于移动互联网的即时消息类服务的需求日益増加。现有的此类业务大多基于私有协议,使得不同服务提供者之间的用户无法互通,目前,急需ー种确保XMPP协议能稳定运行在这种网络上的方法。

发明内容
本发明的目的即在于克服现有技术的不足,提供一种基于XMPP消息的点到点的可靠传输方法,这种扩展与现有XMPP协议兼容,不会影响与现有用户的互联互通。本发明的目的通过以下技术方案来实现ー种XMPP消息的可靠传输方法,在建立在同一个TCP连接上的XMPP协议中增加带外控制消息,实现可靠的点对点XMPP消息传输,所述的增加了带外控制消息的XMPP协议按照以下步骤进行带外传输控制和协商
51:每个XMPP实体在建立一个新连接吋,分别初始化计数发出的XMPP消息个数的发送消息计算器和计数接收到的XMPP消息个数的接收消息计数器为0 ;
52=XMPP实体每发出ー个XMPP消息,就紧跟着发送ー个包含有本方发送消息计数值的控制消息,与此同时,在发送XMPP消息后,XMPP实体缓存发送的XMPP消息;
53=XMPP实体每收到ー个XMPP消息,则检查其后紧跟的控制消息,若控制消息中包含的计数值比实体中接收到的消息的计数值大1,则接收这个XMPP消息,将接收消息计数器加一,并向发送方发送包含当前接收计数器值的确认控制信息,发送方在接收到这个确认控制消息后,将对应的XMPP消息从缓存中删除;
反之,则发出包含接收方希望收到的XMPP消息编号的控制消息,要求发送方XMPP实体重发XMPP消息,发送方在接收到重发XMPP消息的控制消息后,发送缓存内对应的XMPP消息,循环步骤S2 步骤S3,直至接收方接收发送方发送的XMPP消息。所述的带外控制消息包含在XMPP用户消息中,与原始XMPP相兼容。
本发明的有益效果是本发明提供一种基于XMPP消息的点到点的可靠传输方法,这种扩展与现有XMPP协议兼容,可以叠加运行在现有XMPP网络中,不会影响与现有用户的互联互通;本发明实现了 XMPP网络中端到端的可靠性保证,在网络不稳定情况下或TCP连接断开等原因导致的消息无法发送等情况下,消息会在发送方被缓存并反复发送,直到接收到接收方的送达确认。


图I为本发明的流程图。
具体实施例方式下面结合附图对本发明做进ー步的描述,但本发明的保护范围不局限于以下所述。
如图I所示,ー种XMPP消息的可靠传输方法,在建立在同一个TCP连接上的XMPP协议中增加带外控制消息,实现可靠的点对点XMPP消息传输,所述的增加了带外控制消息的XMPP协议按照以下步骤进行带外传输控制和协商
51:每个XMPP实体在建立一个新连接吋,分别初始化计数发出的XMPP消息个数的发送消息计算器和计数接收到的XMPP消息个数的接收消息计数器为0 ;
52=XMPP实体每发出ー个XMPP消息,就紧跟着发送ー个包含有本方发送消息计数值的控制消息,与此同时,在发送XMPP消息后,XMPP实体缓存发送的XMPP消息;
53=XMPP实体每收到ー个XMPP消息,则检查其后紧跟的控制消息,若控制消息中包含的计数值比实体中接收到的消息的计数值大1,则接收这个XMPP消息,将接收消息计数器加一,并向发送方发送包含当前接收计数器值的确认控制信息,发送方在接收到这个确认控制消息后,将对应的XMPP消息从缓存中删除;
反之,则发出包含接收方希望收到的XMPP消息编号的控制消息,要求发送方XMPP实体重发XMPP消息,发送方在接收到重发XMPP消息的控制消息后,发送缓存内对应的XMPP消息,循环步骤S2 步骤S3,直至接收方接收发送方发送的XMPP消息。所述的带外控制消息包含在XMPP用户消息中,与原始XMPP相兼容。由于在XMPP端点加入了缓存和有条件的重传机制,使得TCP断连时无法影响XMPP的消息。在断连时没有成功发送的消息依然在发送方的缓存中,在下次重连以后,这些消息会被再次发送,直到接收方明确的发出接受确认。为了实现与现有XMPP协议的兼容性,可以在建立连接时进行參数协商,如果两个XMPP端点都支持以上的纠错算法,才开启使用额外的控制信息。由于以上描述的控制信息仅仅限制在相邻的两个端点间交互,故而不会给XMPP网络带来其他影响。上述的算法可以叠加在现有XMPP网络中运行,并且只在条件允许(两端都支持)的情况下运行。
权利要求
1.ー种XMPP消息的可靠传输方法,在建立在同一个TCP连接上的XMPP协议中增加带外控制消息,实现可靠的点对点XMPP消息传输,其特征在于所述的增加了带外控制消息的XMPP协议按照以下步骤进行带外传输控制和协商 51:每个XMPP实体在建立一个新连接吋,分别初始化计数发出的XMPP消息个数的发送消息计算器和计数接收到的XMPP消息个数的接收消息计数器为O ; 52=XMPP实体每发出ー个XMPP消息,就紧跟着发送ー个包含有本方发送消息计数值的控制消息,与此同时,在发送XMPP消息后,XMPP实体缓存发送的XMPP消息; 53=XMPP实体每收到ー个XMPP消息,则检查其后紧跟的控制消息,若控制消息中包含的计数值比实体中接收到的消息的计数值大1,则接收这个XMPP消息,将接收消息计数器加一,并向发送方发送包含当前接收计数器值的确认控制信息,发送方在接收到这个确认控制消息后,将对应的XMPP消息从缓存中删除; 反之,则发出包含接收方希望收到的XMPP消息编号的控制消息,要求发送方XMPP实体重发XMPP消息,发送方在接收到重发XMPP消息的控制消息后,发送缓存内对应的XMPP消息,循环步骤S2 步骤S3,直至接收方接收发送方发送的XMPP消息。
2.根据权利要求I所述的ー种XMPP消息的可靠传输方法,其特征在于所述的带外控制消息包含在XMPP用户消息中,与原始XMPP相兼容。
全文摘要
本发明公开了一种XMPP消息的可靠传输方法,增加了带外控制消息的XMPP协议按以下步骤进行带外传输控制和协商S1XMPP实体在建立新连接时,初始化发送和接收消息计数器为0;S2XMPP实体每发出一个XMPP消息,就紧跟着发送一个包含有本方发送消息计数值的控制消息,并缓存发送的消息;S3XMPP实体每收到一个XMPP消息,则检查其后紧跟的控制消息,若控制消息中包含的计数值比实体中接收到消息的计数值大1,则接收这个消息;反之,则要求发送方重发。本发明与现有XMPP协议兼容,可叠加运行在现有XMPP网络中;消息无法发送时,消息在发送方被缓存并反复发送,直至接收方确认送达。
文档编号H04L29/08GK102868677SQ20121026754
公开日2013年1月9日 申请日期2012年7月30日 优先权日2012年7月30日
发明者王靖 申请人:成都西可科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1