專利名稱:一種xmpp消息的可靠傳輸方法
技術(shù)領(lǐng)域:
本發(fā)明涉及ー種XMPP消息的可靠傳輸方法。
背景技術(shù):
XMPP (Extensible Messaging and Presence Protocol)是一種以 XML 為基礎(chǔ)的開放式即時通訊協(xié)議,是經(jīng)互聯(lián)網(wǎng)工程工作小組(IETF)通過的互聯(lián)網(wǎng)標準。XMPP規(guī)定了近實時的、可擴展的即時消息(Instant Messaging)傳輸標準,憑借其巨大的靈活性和開放性在即時通訊市場上占有了很大的份額。若干的計算機行業(yè)巨頭均采用XMPP協(xié)議實現(xiàn)其即時消息通訊服務(wù)。
XMPP不關(guān)心消息的可靠送達,它僅依靠底層的TCP連接來保證這一點。但是在不穩(wěn)定的網(wǎng)絡(luò)中,無法保持長時間的TCP連接。因此TCP僅僅能保證消息的順序遞交,并不能保證消息不被丟失。這ー特點使得在這類網(wǎng)絡(luò)中使用XMPP格外困難。運行在手機、基站之間的移動通信網(wǎng)絡(luò)就是ー個典型的不穩(wěn)定網(wǎng)絡(luò),用戶的通話、短消息,以及基站切換等動作都可能導致連接中斷,進而導致消息丟失。隨著移動互聯(lián)網(wǎng)的逐步發(fā)展,對于基于移動互聯(lián)網(wǎng)的即時消息類服務(wù)的需求日益増加?,F(xiàn)有的此類業(yè)務(wù)大多基于私有協(xié)議,使得不同服務(wù)提供者之間的用戶無法互通,目前,急需ー種確保XMPP協(xié)議能穩(wěn)定運行在這種網(wǎng)絡(luò)上的方法。
發(fā)明內(nèi)容
本發(fā)明的目的即在于克服現(xiàn)有技術(shù)的不足,提供一種基于XMPP消息的點到點的可靠傳輸方法,這種擴展與現(xiàn)有XMPP協(xié)議兼容,不會影響與現(xiàn)有用戶的互聯(lián)互通。本發(fā)明的目的通過以下技術(shù)方案來實現(xiàn)ー種XMPP消息的可靠傳輸方法,在建立在同一個TCP連接上的XMPP協(xié)議中增加帶外控制消息,實現(xiàn)可靠的點對點XMPP消息傳輸,所述的增加了帶外控制消息的XMPP協(xié)議按照以下步驟進行帶外傳輸控制和協(xié)商
51:每個XMPP實體在建立一個新連接吋,分別初始化計數(shù)發(fā)出的XMPP消息個數(shù)的發(fā)送消息計算器和計數(shù)接收到的XMPP消息個數(shù)的接收消息計數(shù)器為0 ;
52=XMPP實體每發(fā)出ー個XMPP消息,就緊跟著發(fā)送ー個包含有本方發(fā)送消息計數(shù)值的控制消息,與此同時,在發(fā)送XMPP消息后,XMPP實體緩存發(fā)送的XMPP消息;
53=XMPP實體每收到ー個XMPP消息,則檢查其后緊跟的控制消息,若控制消息中包含的計數(shù)值比實體中接收到的消息的計數(shù)值大1,則接收這個XMPP消息,將接收消息計數(shù)器加一,并向發(fā)送方發(fā)送包含當前接收計數(shù)器值的確認控制信息,發(fā)送方在接收到這個確認控制消息后,將對應(yīng)的XMPP消息從緩存中刪除;
反之,則發(fā)出包含接收方希望收到的XMPP消息編號的控制消息,要求發(fā)送方XMPP實體重發(fā)XMPP消息,發(fā)送方在接收到重發(fā)XMPP消息的控制消息后,發(fā)送緩存內(nèi)對應(yīng)的XMPP消息,循環(huán)步驟S2 步驟S3,直至接收方接收發(fā)送方發(fā)送的XMPP消息。所述的帶外控制消息包含在XMPP用戶消息中,與原始XMPP相兼容。
本發(fā)明的有益效果是本發(fā)明提供一種基于XMPP消息的點到點的可靠傳輸方法,這種擴展與現(xiàn)有XMPP協(xié)議兼容,可以疊加運行在現(xiàn)有XMPP網(wǎng)絡(luò)中,不會影響與現(xiàn)有用戶的互聯(lián)互通;本發(fā)明實現(xiàn)了 XMPP網(wǎng)絡(luò)中端到端的可靠性保證,在網(wǎng)絡(luò)不穩(wěn)定情況下或TCP連接斷開等原因?qū)е碌南o法發(fā)送等情況下,消息會在發(fā)送方被緩存并反復發(fā)送,直到接收到接收方的送達確認。
圖I為本發(fā)明的流程圖。
具體實施例方式下面結(jié)合附圖對本發(fā)明做進ー步的描述,但本發(fā)明的保護范圍不局限于以下所述。
如圖I所示,ー種XMPP消息的可靠傳輸方法,在建立在同一個TCP連接上的XMPP協(xié)議中增加帶外控制消息,實現(xiàn)可靠的點對點XMPP消息傳輸,所述的增加了帶外控制消息的XMPP協(xié)議按照以下步驟進行帶外傳輸控制和協(xié)商
51:每個XMPP實體在建立一個新連接吋,分別初始化計數(shù)發(fā)出的XMPP消息個數(shù)的發(fā)送消息計算器和計數(shù)接收到的XMPP消息個數(shù)的接收消息計數(shù)器為0 ;
52=XMPP實體每發(fā)出ー個XMPP消息,就緊跟著發(fā)送ー個包含有本方發(fā)送消息計數(shù)值的控制消息,與此同時,在發(fā)送XMPP消息后,XMPP實體緩存發(fā)送的XMPP消息;
53=XMPP實體每收到ー個XMPP消息,則檢查其后緊跟的控制消息,若控制消息中包含的計數(shù)值比實體中接收到的消息的計數(shù)值大1,則接收這個XMPP消息,將接收消息計數(shù)器加一,并向發(fā)送方發(fā)送包含當前接收計數(shù)器值的確認控制信息,發(fā)送方在接收到這個確認控制消息后,將對應(yīng)的XMPP消息從緩存中刪除;
反之,則發(fā)出包含接收方希望收到的XMPP消息編號的控制消息,要求發(fā)送方XMPP實體重發(fā)XMPP消息,發(fā)送方在接收到重發(fā)XMPP消息的控制消息后,發(fā)送緩存內(nèi)對應(yīng)的XMPP消息,循環(huán)步驟S2 步驟S3,直至接收方接收發(fā)送方發(fā)送的XMPP消息。所述的帶外控制消息包含在XMPP用戶消息中,與原始XMPP相兼容。由于在XMPP端點加入了緩存和有條件的重傳機制,使得TCP斷連時無法影響XMPP的消息。在斷連時沒有成功發(fā)送的消息依然在發(fā)送方的緩存中,在下次重連以后,這些消息會被再次發(fā)送,直到接收方明確的發(fā)出接受確認。為了實現(xiàn)與現(xiàn)有XMPP協(xié)議的兼容性,可以在建立連接時進行參數(shù)協(xié)商,如果兩個XMPP端點都支持以上的糾錯算法,才開啟使用額外的控制信息。由于以上描述的控制信息僅僅限制在相鄰的兩個端點間交互,故而不會給XMPP網(wǎng)絡(luò)帶來其他影響。上述的算法可以疊加在現(xiàn)有XMPP網(wǎng)絡(luò)中運行,并且只在條件允許(兩端都支持)的情況下運行。
權(quán)利要求
1.ー種XMPP消息的可靠傳輸方法,在建立在同一個TCP連接上的XMPP協(xié)議中增加帶外控制消息,實現(xiàn)可靠的點對點XMPP消息傳輸,其特征在于所述的增加了帶外控制消息的XMPP協(xié)議按照以下步驟進行帶外傳輸控制和協(xié)商 51:每個XMPP實體在建立一個新連接吋,分別初始化計數(shù)發(fā)出的XMPP消息個數(shù)的發(fā)送消息計算器和計數(shù)接收到的XMPP消息個數(shù)的接收消息計數(shù)器為O ; 52=XMPP實體每發(fā)出ー個XMPP消息,就緊跟著發(fā)送ー個包含有本方發(fā)送消息計數(shù)值的控制消息,與此同時,在發(fā)送XMPP消息后,XMPP實體緩存發(fā)送的XMPP消息; 53=XMPP實體每收到ー個XMPP消息,則檢查其后緊跟的控制消息,若控制消息中包含的計數(shù)值比實體中接收到的消息的計數(shù)值大1,則接收這個XMPP消息,將接收消息計數(shù)器加一,并向發(fā)送方發(fā)送包含當前接收計數(shù)器值的確認控制信息,發(fā)送方在接收到這個確認控制消息后,將對應(yīng)的XMPP消息從緩存中刪除; 反之,則發(fā)出包含接收方希望收到的XMPP消息編號的控制消息,要求發(fā)送方XMPP實體重發(fā)XMPP消息,發(fā)送方在接收到重發(fā)XMPP消息的控制消息后,發(fā)送緩存內(nèi)對應(yīng)的XMPP消息,循環(huán)步驟S2 步驟S3,直至接收方接收發(fā)送方發(fā)送的XMPP消息。
2.根據(jù)權(quán)利要求I所述的ー種XMPP消息的可靠傳輸方法,其特征在于所述的帶外控制消息包含在XMPP用戶消息中,與原始XMPP相兼容。
全文摘要
本發(fā)明公開了一種XMPP消息的可靠傳輸方法,增加了帶外控制消息的XMPP協(xié)議按以下步驟進行帶外傳輸控制和協(xié)商S1XMPP實體在建立新連接時,初始化發(fā)送和接收消息計數(shù)器為0;S2XMPP實體每發(fā)出一個XMPP消息,就緊跟著發(fā)送一個包含有本方發(fā)送消息計數(shù)值的控制消息,并緩存發(fā)送的消息;S3XMPP實體每收到一個XMPP消息,則檢查其后緊跟的控制消息,若控制消息中包含的計數(shù)值比實體中接收到消息的計數(shù)值大1,則接收這個消息;反之,則要求發(fā)送方重發(fā)。本發(fā)明與現(xiàn)有XMPP協(xié)議兼容,可疊加運行在現(xiàn)有XMPP網(wǎng)絡(luò)中;消息無法發(fā)送時,消息在發(fā)送方被緩存并反復發(fā)送,直至接收方確認送達。
文檔編號H04L29/08GK102868677SQ20121026754
公開日2013年1月9日 申請日期2012年7月30日 優(yōu)先權(quán)日2012年7月30日
發(fā)明者王靖 申請人:成都西可科技有限公司