CN102868677B - 一种xmpp消息的可靠传输方法 - Google Patents
一种xmpp消息的可靠传输方法 Download PDFInfo
- Publication number
- CN102868677B CN102868677B CN201210267544.5A CN201210267544A CN102868677B CN 102868677 B CN102868677 B CN 102868677B CN 201210267544 A CN201210267544 A CN 201210267544A CN 102868677 B CN102868677 B CN 102868677B
- Authority
- CN
- China
- Prior art keywords
- message
- xmpp
- entity
- transmission
- control message
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Mobile Radio Communication Systems (AREA)
Abstract
本发明公开了一种XMPP消息的可靠传输方法,增加了带外控制消息的XMPP协议按以下步骤进行带外传输控制和协商:S1:XMPP实体在建立新连接时,初始化发送和接收消息计数器为0;S2:XMPP实体每发出一个XMPP消息,就紧跟着发送一个包含有本方发送消息计数值的控制消息,并缓存发送的消息;S3:XMPP实体每收到一个XMPP消息,则检查其后紧跟的控制消息,若控制消息中包含的计数值比实体中接收到消息的计数值大1,则接收这个消息;反之,则要求发送方重发。本发明与现有XMPP协议兼容,可叠加运行在现有XMPP网络中;消息无法发送时,消息在发送方被缓存并反复发送,直至接收方确认送达。
Description
技术领域
本发明涉及一种XMPP消息的可靠传输方法。
背景技术
XMPP(ExtensibleMessagingandPresenceProtocol)是一种以XML为基础的开放式即时通讯协议,是经互联网工程工作小组(IETF)通过的互联网标准。XMPP规定了近实时的、可扩展的即时消息(InstantMessaging)传输标准,凭借其巨大的灵活性和开放性在即时通讯市场上占有了很大的份额。若干的计算机行业巨头均采用XMPP协议实现其即时消息通讯服务。
XMPP不关心消息的可靠送达,它仅依靠底层的TCP连接来保证这一点。但是在不稳定的网络中,无法保持长时间的TCP连接。因此TCP仅仅能保证消息的顺序递交,并不能保证消息不被丢失。这一特点使得在这类网络中使用XMPP格外困难。运行在手机、基站之间的移动通信网络就是一个典型的不稳定网络,用户的通话、短消息,以及基站切换等动作都可能导致连接中断,进而导致消息丢失。
随着移动互联网的逐步发展,对于基于移动互联网的即时消息类服务的需求日益增加。现有的此类业务大多基于私有协议,使得不同服务提供者之间的用户无法互通,目前,急需一种确保XMPP协议能稳定运行在这种网络上的方法。
发明内容
本发明的目的即在于克服现有技术的不足,提供一种基于XMPP消息的点到点的可靠传输方法,这种扩展与现有XMPP协议兼容,不会影响与现有用户的互联互通。
本发明的目的通过以下技术方案来实现:一种XMPP消息的可靠传输方法,在建立在同一个TCP连接上的XMPP协议中增加带外控制消息,实现可靠的点对点XMPP消息传输,所述的增加了带外控制消息的XMPP协议按照以下步骤进行带外传输控制和协商:
S1:每个XMPP实体在建立一个新连接时,分别初始化计数发出的XMPP消息个数的发送消息计算器和计数接收到的XMPP消息个数的接收消息计数器为0;
S2:XMPP实体每发出一个XMPP消息,就紧跟着发送一个包含有本方发送消息计数值的控制消息,与此同时,在发送XMPP消息后,XMPP实体缓存发送的XMPP消息;
S3:XMPP实体每收到一个XMPP消息,则检查其后紧跟的控制消息,若控制消息中包含的计数值比实体中接收到的消息的计数值大1,则接收这个XMPP消息,将接收消息计数器加一,并向发送方发送包含当前接收计数器值的确认控制信息,发送方在接收到这个确认控制消息后,将对应的XMPP消息从缓存中删除;
反之,则发出包含接收方希望收到的XMPP消息编号的控制消息,要求发送方XMPP实体重发XMPP消息,发送方在接收到重发XMPP消息的控制消息后,发送缓存内对应的XMPP消息,循环步骤S2~步骤S3,直至接收方接收发送方发送的XMPP消息。
所述的带外控制消息包含在XMPP用户消息中,与原始XMPP相兼容。
本发明的有益效果是:本发明提供一种基于XMPP消息的点到点的可靠传输方法,这种扩展与现有XMPP协议兼容,可以叠加运行在现有XMPP网络中,不会影响与现有用户的互联互通;本发明实现了XMPP网络中端到端的可靠性保证,在网络不稳定情况下或TCP连接断开等原因导致的消息无法发送等情况下,消息会在发送方被缓存并反复发送,直到接收到接收方的送达确认。
附图说明
图1为本发明的流程图。
具体实施方式
下面结合附图对本发明做进一步的描述,但本发明的保护范围不局限于以下所述。
如图1所示,一种XMPP消息的可靠传输方法,在建立在同一个TCP连接上的XMPP协议中增加带外控制消息,实现可靠的点对点XMPP消息传输,所述的增加了带外控制消息的XMPP协议按照以下步骤进行带外传输控制和协商:
S1:每个XMPP实体在建立一个新连接时,分别初始化计数发出的XMPP消息个数的发送消息计算器和计数接收到的XMPP消息个数的接收消息计数器为0;
S2:XMPP实体每发出一个XMPP消息,就紧跟着发送一个包含有本方发送消息计数值的控制消息,与此同时,在发送XMPP消息后,XMPP实体缓存发送的XMPP消息;
S3:XMPP实体每收到一个XMPP消息,则检查其后紧跟的控制消息,若控制消息中包含的计数值比实体中接收到的消息的计数值大1,则接收这个XMPP消息,将接收消息计数器加一,并向发送方发送包含当前接收计数器值的确认控制信息,发送方在接收到这个确认控制消息后,将对应的XMPP消息从缓存中删除;
反之,则发出包含接收方希望收到的XMPP消息编号的控制消息,要求发送方XMPP实体重发XMPP消息,发送方在接收到重发XMPP消息的控制消息后,发送缓存内对应的XMPP消息,循环步骤S2~步骤S3,直至接收方接收发送方发送的XMPP消息。
所述的带外控制消息包含在XMPP用户消息中,与原始XMPP相兼容。
由于在XMPP端点加入了缓存和有条件的重传机制,使得TCP断连时无法影响XMPP的消息。在断连时没有成功发送的消息依然在发送方的缓存中,在下次重连以后,这些消息会被再次发送,直到接收方明确的发出接受确认。
为了实现与现有XMPP协议的兼容性,可以在建立连接时进行参数协商,如果两个XMPP端点都支持以上的纠错算法,才开启使用额外的控制信息。
由于以上描述的控制信息仅仅限制在相邻的两个端点间交互,故而不会给XMPP网络带来其他影响。上述的算法可以叠加在现有XMPP网络中运行,并且只在条件允许(两端都支持)的情况下运行。
Claims (1)
1.一种XMPP消息的可靠传输方法,在建立在同一个TCP连接上的XMPP协议中增加带外控制消息,实现可靠的点对点XMPP消息传输,其特征在于:所述的增加了带外控制消息的XMPP协议按照以下步骤进行带外传输控制和协商,所述带外控制消息仅仅限制在相邻的两个端点间交互:
S1:每个XMPP实体在建立一个新连接时,分别初始化计数发出的XMPP消息个数的发送消息计算器和计数接收到的XMPP消息个数的接收消息计数器为0;
S2:XMPP实体每发出一个XMPP消息,就紧跟着发送一个包含有本方发送消息计数值的控制消息,与此同时,在发送XMPP消息后,XMPP实体缓存发送的XMPP消息;
S3:XMPP实体每收到一个XMPP消息,则检查其后紧跟的控制消息,若控制消息中包含的计数值比实体中接收到的消息的计数值大1,则接收这个XMPP消息,将接收消息计数器加一,并向发送方发送包含当前接收计数器值的确认控制消息,发送方在接收到这个确认控制消息后,将对应的XMPP消息从缓存中删除;
反之,则发出包含接收方希望收到的XMPP消息编号的控制消息,要求发送方XMPP实体重发XMPP消息,发送方在接收到重发XMPP消息的控制消息后,发送缓存内对应的XMPP消息,循环步骤S2~步骤S3,直至接收方接收发送方发送的XMPP消息;
由于在XMPP端点加入了缓存和有条件的重传机制,使得TCP断连时无法影响XMPP的消息,在断连时没有成功发送的消息依然在发送方的缓存中,在下次重连以后,这些消息会被再次发送,直到接收方明确的发出接受确认;
所述的带外控制消息包含在XMPP用户消息中,与原始XMPP相兼容,为了实现与现有XMPP协议的兼容性,在建立连接时进行参数协商,如果两个XMPP端点都支持以上的纠错算法,才开启使用额外的带外控制消息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210267544.5A CN102868677B (zh) | 2012-07-30 | 2012-07-30 | 一种xmpp消息的可靠传输方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210267544.5A CN102868677B (zh) | 2012-07-30 | 2012-07-30 | 一种xmpp消息的可靠传输方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102868677A CN102868677A (zh) | 2013-01-09 |
CN102868677B true CN102868677B (zh) | 2015-12-02 |
Family
ID=47447271
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210267544.5A Expired - Fee Related CN102868677B (zh) | 2012-07-30 | 2012-07-30 | 一种xmpp消息的可靠传输方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102868677B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104539524A (zh) * | 2015-01-04 | 2015-04-22 | 深圳中兴网信科技有限公司 | 基于xmpp协议的消息传输方法及系统、终端 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1734997A (zh) * | 2004-08-11 | 2006-02-15 | 华为技术有限公司 | 一种数据传输的方法 |
CN101997660A (zh) * | 2009-08-14 | 2011-03-30 | 中兴通讯股份有限公司 | 一种避免上行数据丢失的方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7269172B2 (en) * | 2003-01-07 | 2007-09-11 | Sun Microsystems, Inc. | Method and device for managing transmit buffers |
-
2012
- 2012-07-30 CN CN201210267544.5A patent/CN102868677B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1734997A (zh) * | 2004-08-11 | 2006-02-15 | 华为技术有限公司 | 一种数据传输的方法 |
CN101997660A (zh) * | 2009-08-14 | 2011-03-30 | 中兴通讯股份有限公司 | 一种避免上行数据丢失的方法及装置 |
Non-Patent Citations (1)
Title |
---|
"XEP-0198:Stream Management";Justin Karneges et al;《XMPP Standards Foundation》;20110629;摘要、第1-4节 * |
Also Published As
Publication number | Publication date |
---|---|
CN102868677A (zh) | 2013-01-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102143444B (zh) | 一种业务分发平台消息推送方法、相关设备及系统 | |
CN103916405B (zh) | 一种IOS上针对App的TCP/UDP流量引导的方法 | |
CN102202010A (zh) | 一种结合短信和网络的消息传递客户端及通信方法 | |
US10382908B2 (en) | Method and apparatus for transmitting an soap message in a mobile communication system | |
CN105024861A (zh) | 一种基于北斗卫星的可靠远程通信方法及其通信装置 | |
CN104636986B (zh) | 一种基于服务的调度远程安全遥控校核的方法 | |
CN102291699A (zh) | 一种ip信息与sms短消息结合的手机短信发送系统及方法 | |
KR101567292B1 (ko) | 텍스트 메시징을 위한 레스트풀 웹 서비스들 및 패킷-교환 네트워크들 간의 인터페이스 | |
CN103973414B (zh) | 一种数据传输方法及装置 | |
CN103457985A (zh) | 一种双通道通信方法和系统 | |
CN111818040A (zh) | 物联网传输标准协议实现通信方法 | |
CN101631127A (zh) | 文件传输方法及客户端 | |
CN101409939B (zh) | 一种实现企业应用数据实时推送的端到端系统及其方法 | |
CN104168273A (zh) | 一种瘦ap模式下实现tcp代理的方法及系统 | |
CN104427551A (zh) | 一种业务消息发送方法及装置 | |
CN102868677B (zh) | 一种xmpp消息的可靠传输方法 | |
CN202043130U (zh) | 电站远程控制系统 | |
CN104519022A (zh) | 一种建立连接通道的方法及装置 | |
CN102904764A (zh) | 一种数据传输装置及其传输方法 | |
CN103391238A (zh) | 一种基于xmpp的消息投递状态通告和可靠传输方法 | |
CN110557369A (zh) | 基于国产操作系统内核态的高速数据处理平台 | |
CN101888343A (zh) | 一种业务数据的发送方法及系统 | |
CN202190407U (zh) | 一种ip信息与sms短消息结合的手机短信发送系统 | |
CN101267458A (zh) | 一种网络环境中储存系统的数据传输方法 | |
CN103873594A (zh) | 服务转接方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: Two Lu Tian Hua high tech Zone of Chengdu City, Sichuan province 610041 No. 219 Tianfu Software Park C District 12 building 6 layer Applicant after: Chengdu Xike Technology Co.,Ltd. Address before: The middle Tianfu Avenue in Chengdu city Sichuan province 610041 No. 765 talent Software Park A District No. 1 Building 2 room 214 Applicant before: Chengdu Xike Technology Co.,Ltd. |
|
COR | Change of bibliographic data | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20151202 Termination date: 20200730 |
|
CF01 | Termination of patent right due to non-payment of annual fee |