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