一種即時(shí)通訊im消息的傳輸方法及裝置、系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及移動(dòng)通信技術(shù)領(lǐng)域,具體涉及一種即時(shí)通訊頂消息的傳輸方法及裝置、系統(tǒng)。
【背景技術(shù)】
[0002]近些年來(lái),伴隨著移動(dòng)通信技術(shù)的快速發(fā)展,一種能夠讓用戶在移動(dòng)網(wǎng)絡(luò)上建立私人聊天室的即時(shí)通訊(IM,Instant Messaging)應(yīng)用越來(lái)越被廣泛的使用,且IM應(yīng)用的功能都是基于頂消息的可靠性傳輸來(lái)實(shí)現(xiàn)的??紤]到移動(dòng)網(wǎng)絡(luò)的復(fù)雜性以及移動(dòng)終端的移動(dòng)性等因素,IM消息的可靠性傳輸面臨著巨大的挑戰(zhàn)。
[0003]當(dāng)前,IM消息的可靠性傳輸?shù)膶?shí)現(xiàn)方式為頂消息重傳,其具體為:在頂應(yīng)用客戶端通過接入服務(wù)器與應(yīng)用服務(wù)器互發(fā)頂消息時(shí),若頂消息發(fā)送方在發(fā)送頂消息后的一定時(shí)間段內(nèi)未接收到頂消息接收方返回的確認(rèn)消息,則IM消息發(fā)送方會(huì)重新發(fā)送該頂消息,若重新發(fā)送IM消息的次數(shù)大于最大次數(shù),則頂消息發(fā)送失敗。但是,多次重新發(fā)送頂消息之后仍會(huì)出現(xiàn)IM消息發(fā)送失敗的情況,可見,當(dāng)前的頂消息的可靠性傳輸?shù)膶?shí)現(xiàn)方式存在可靠性低的問題。
【發(fā)明內(nèi)容】
[0004]本發(fā)明實(shí)施例公開了一種即時(shí)通訊頂消息的傳輸方法及裝置、系統(tǒng),能夠提高頂消息的傳輸可靠性。
[0005]本發(fā)明實(shí)施例第一方面公開了一種即時(shí)通訊頂消息的傳輸方法,所述方法包括:
[0006]客戶端建立與第一接入服務(wù)器間的至少兩條連接以及與第二接入服務(wù)器間的至少一條連接;
[0007]所述客戶端從與所述第一接入服務(wù)器以及所述第二接入服務(wù)器建立的多條連接中選擇一條連接作為當(dāng)前發(fā)送頂消息的目標(biāo)連接;
[0008]所述客戶端通過當(dāng)前選擇的目標(biāo)連接發(fā)送所述頂消息,并判斷在發(fā)送所述IM消息后的預(yù)設(shè)時(shí)間段內(nèi)是否接收到確認(rèn)消息,所述確認(rèn)消息用于指示所述IM消息發(fā)送成功;
[0009]當(dāng)未接收到所述確認(rèn)消息時(shí),所述客戶端從所述多條連接中選擇除所述目標(biāo)連接之外的一條連接作為當(dāng)前發(fā)送所述IM消息的目標(biāo)連接,并執(zhí)行所述客戶端通過當(dāng)前選擇的目標(biāo)連接發(fā)送所述頂消息,并判斷在發(fā)送所述頂消息后的預(yù)設(shè)時(shí)間段內(nèi)是否接收到確認(rèn)消息的操作,直至所述客戶端在通過當(dāng)前選擇的目標(biāo)連接發(fā)送所述頂消息后的所述預(yù)設(shè)時(shí)間段內(nèi)接收到所述確認(rèn)消息。
[0010]在本發(fā)明實(shí)施例第一方面的第一種可能的實(shí)現(xiàn)方式中,所述多條連接中每條連接都存在與之對(duì)應(yīng)的優(yōu)先級(jí);
[0011]所述客戶端從所述多條連接中選擇除所述目標(biāo)連接之外的一條連接作為當(dāng)前發(fā)送所述頂消息的目標(biāo)連接,包括:
[0012]所述客戶端判斷所述多條連接中是否存在未發(fā)送過所述頂消息的連接;
[0013]當(dāng)存在未發(fā)送過所述IM消息的連接時(shí),所述客戶端從所述多條連接中選擇未發(fā)送過所述IM消息且優(yōu)先級(jí)最高的連接作為當(dāng)前發(fā)送所述頂消息的目標(biāo)連接;
[0014]當(dāng)不存在未發(fā)送過所述頂消息的連接時(shí),所述客戶端從所述多條連接中選擇優(yōu)先級(jí)最高的連接作為當(dāng)前發(fā)送所述IM消息的目標(biāo)連接。
[0015]結(jié)合本發(fā)明實(shí)施例第一方面或本發(fā)明實(shí)施例第一方面的第一種可能的實(shí)現(xiàn)方式,在本發(fā)明實(shí)施例第一方面的第二種可能的實(shí)現(xiàn)方式中,所述至少兩條連接包括傳輸控制協(xié)議TCP連接以及第一用戶數(shù)據(jù)報(bào)協(xié)議UDP連接,所所述至少一條連接包括第二 UDP連接。
[0016]結(jié)合本發(fā)明實(shí)施例第一方面,在本發(fā)明實(shí)施例第一方面的第三種可能的實(shí)現(xiàn)方式中,當(dāng)未接收到所述確認(rèn)消息時(shí),所述客戶端從所述多條連接中選擇除所述目標(biāo)連接之外的一條連接作為當(dāng)前發(fā)送所述IM消息的目標(biāo)連接之前,所述方法還包括:
[0017]所述客戶端判斷所述頂消息的發(fā)送次數(shù)是否小于等于預(yù)設(shè)次數(shù);
[0018]當(dāng)所述頂消息的發(fā)送次數(shù)小于等于所述預(yù)設(shè)次數(shù)時(shí),執(zhí)行所述客戶端從所述多條連接中選擇除所述目標(biāo)連接之外的一條連接作為當(dāng)前發(fā)送所述頂消息的目標(biāo)連接的操作;
[0019]所述方法還包括:
[0020]當(dāng)所述頂消息的發(fā)送次數(shù)大于所述預(yù)設(shè)次數(shù)時(shí),輸出提示消息,所述提示消息用于提示所述頂消息發(fā)送失敗。
[0021]本發(fā)明實(shí)施例第二方面公開了一種客戶端,所述客戶端包括建立模塊,選擇模塊、通信模塊以及判斷模塊,其中:
[0022]所述建立模塊,用于建立與第一接入服務(wù)器間的至少兩條連接以及與第二接入服務(wù)器間的至少一條連接;
[0023]所述選擇模塊,用于從與所述第一接入服務(wù)器以及所述第二接入服務(wù)器建立的多條連接中選擇一條連接作為當(dāng)前發(fā)送頂消息的目標(biāo)連接;
[0024]所述通信模塊,用于通過當(dāng)前選擇的目標(biāo)連接發(fā)送所述IM消息;
[0025]所述判斷模塊,用于判斷在發(fā)送所述頂消息后的預(yù)設(shè)時(shí)間段內(nèi)所述通信模塊是否接收到確認(rèn)消息,所述確認(rèn)消息用于指示所述IM消息發(fā)送成功;
[0026]所述選擇模塊,還用于當(dāng)所述判斷模塊判斷出所述通信模塊未接收到所述確認(rèn)消息時(shí),從所述多條連接中選擇除所述目標(biāo)連接之外的一條連接作為當(dāng)前發(fā)送所述頂消息的目標(biāo)連接,并觸發(fā)所述通信模塊執(zhí)行所述通過當(dāng)前選擇的目標(biāo)連接發(fā)送所述頂消息的操作以及所述判斷模塊執(zhí)行所述判斷在發(fā)送所述IM消息后的預(yù)設(shè)時(shí)間段內(nèi)是否接收到確認(rèn)消息的操作,直至所述判斷模塊判斷出在通過當(dāng)前選擇的目標(biāo)連接發(fā)送所述IM消息后的所述預(yù)設(shè)時(shí)間段內(nèi)所述通信模塊接收到所述確認(rèn)消息。
[0027]在本發(fā)明實(shí)施例第二方面的第一種可能的實(shí)現(xiàn)方式中,所述多條連接中每條連接都存在與之對(duì)應(yīng)的優(yōu)先級(jí);
[0028]所述選擇模塊從所述多條連接中選擇除所述目標(biāo)連接之外的一條連接作為當(dāng)前發(fā)送所述頂消息的目標(biāo)連接的具體方式為:
[0029]判斷所述多條連接中是否存在未發(fā)送過所述IM消息的連接;
[0030]當(dāng)存在未發(fā)送過所述IM消息的連接時(shí),從所述多條連接中選擇未發(fā)送過所述IM消息且優(yōu)先級(jí)最高的連接作為當(dāng)前發(fā)送所述IM消息的目標(biāo)連接;
[0031]當(dāng)不存在未發(fā)送過所述IM消息的連接時(shí),從所述多條連接中選擇優(yōu)先級(jí)最高的連接作為當(dāng)前發(fā)送所述頂消息的目標(biāo)連接。
[0032]結(jié)合本發(fā)明實(shí)施例第二方面或本發(fā)明實(shí)施例第二方面的第一種可能的實(shí)現(xiàn)方式,在本發(fā)明實(shí)施例第二方面的第二種可能的實(shí)現(xiàn)方式中,所述至少兩條連接包括TCP連接以及第一 UDP連接,所述至少一條連接包括第二 UDP連接。
[0033]結(jié)合本發(fā)明實(shí)施例第二方面,在本發(fā)明實(shí)施例第二方面的第三種可能的實(shí)現(xiàn)方式中,所述判斷模塊,還用于在所述選擇模塊從所述多條連接中選擇除所述目標(biāo)連接之外的一條連接作為當(dāng)前發(fā)送所述頂消息的目標(biāo)連接之前,判斷所述頂消息的發(fā)送次數(shù)是否小于等于預(yù)設(shè)次數(shù),當(dāng)所述頂消息的發(fā)送次數(shù)小于等于所述預(yù)設(shè)次數(shù)時(shí),觸發(fā)所述選擇模塊執(zhí)行所述從所述多條連接中選擇除所述目標(biāo)連接之外的一條連接作為當(dāng)前發(fā)送所述IM消息的目標(biāo)連接的操作;
[0034]所述客戶端還包括輸出模塊,其中:
[0035]所述輸出模塊,用于當(dāng)所述頂消息的發(fā)送次數(shù)大于所述預(yù)設(shè)次數(shù)時(shí),輸出提示消息,所述提示消息用于提示所述頂消息發(fā)送失敗。
[0036]本發(fā)明實(shí)施例第三方面公開了一種即時(shí)通訊頂消息的傳輸系統(tǒng),所述系統(tǒng)包括客戶端、第一接入服務(wù)器、第二接入服務(wù)器以及應(yīng)用服務(wù)器,其中:
[0037]所述客戶端,用于建立與所述第一接入服務(wù)器間的至少兩條連接以及與所述第二接入服務(wù)器間的至少一條連接,從所述至少兩條連接以及所述至少一條連接中選擇一條連接作為當(dāng)前發(fā)送第一頂消息的目標(biāo)連接,通過當(dāng)前選擇的所述目標(biāo)連接向與該目標(biāo)連接對(duì)應(yīng)的接入服務(wù)器發(fā)送第一 IM消息,并判斷在發(fā)送所述第一頂消息后的第一預(yù)設(shè)時(shí)間段內(nèi)是否接收到第一確認(rèn)消息,若否,則從所述至少兩條連接以及所述至少一條連接中選擇除所述目標(biāo)連接之外的一條連接作為當(dāng)前發(fā)送所述第一頂消息的目標(biāo)連接,執(zhí)行所述通過當(dāng)前選擇的所述目標(biāo)連接向與該目標(biāo)連接對(duì)應(yīng)的接入服務(wù)器發(fā)送第一頂消息,并判斷在發(fā)送所述第一 IM消息后的第一預(yù)設(shè)時(shí)間段內(nèi)是否接收到第一確認(rèn)消息的操作,直至在通過當(dāng)前選擇的目標(biāo)連接發(fā)送所述第一 IM消息后的所述第一預(yù)設(shè)時(shí)間段內(nèi)接收到所述第一確認(rèn)消息,其中,所述第一確認(rèn)消息用于指示所述第一 IM消息發(fā)送成功;
[0038]所述第一接入服務(wù)器,用于在接收到所述客戶端發(fā)送的所述第一頂消息時(shí),向所述應(yīng)用服務(wù)器轉(zhuǎn)發(fā)所述第一 IM消息;
[0039]所述第二接入服務(wù)器,用于在接收到所述客戶端發(fā)送的所述第一頂消息時(shí),向所述應(yīng)用服務(wù)器轉(zhuǎn)發(fā)所述第一 IM消息;
[0040]所述應(yīng)用服務(wù)器,用于接收所述目標(biāo)連接對(duì)應(yīng)的接入服務(wù)器發(fā)送的所述第一頂消息,并向所述客戶端返回所述第一確認(rèn)消息。
[0041]在本發(fā)明實(shí)施例第三方面的第一種可能的實(shí)現(xiàn)方式中,所述應(yīng)用服務(wù)器,還用于從所述第一接入服務(wù)器以及所述第二接入服務(wù)器中選擇一個(gè)接入服務(wù)器作為當(dāng)前發(fā)送第二頂消息的目標(biāo)接入服務(wù)器,向當(dāng)前選擇的所述目標(biāo)接入服務(wù)器發(fā)送所述第二頂消息,并判斷在發(fā)送所述第二頂消息后的第二預(yù)設(shè)時(shí)間段內(nèi)是否接收到第二確認(rèn)消息,若否,則從所述第一接入服務(wù)器以及所述第二接入服務(wù)器中選擇除所述目標(biāo)接入服務(wù)器之外的一個(gè)接入服務(wù)器作為當(dāng)前發(fā)送所述第二頂消息的目標(biāo)接入服務(wù)器,執(zhí)行所述向當(dāng)前選擇的所述目標(biāo)接入服務(wù)器發(fā)送所述第二頂消息,并判斷在發(fā)送所述第二頂消息后的第二預(yù)設(shè)時(shí)間段內(nèi)是否接收到第二確認(rèn)消息的操作,直至在向當(dāng)前選擇的目標(biāo)接入服務(wù)器發(fā)送所述第二頂消息后的所述第二預(yù)設(shè)時(shí)間段內(nèi)接收到所述第二確認(rèn)消息,其中,所述第二確認(rèn)消息用于指示所述第二頂消息發(fā)送成功;
[0042]所述第一接入服務(wù)器,還用于在接收到所述應(yīng)用服務(wù)器發(fā)送的所述第二頂消息時(shí),向所述客戶端轉(zhuǎn)發(fā)所述第二頂消息;
[0043]所述第二接入服務(wù)器,還用于在接收到所述應(yīng)用服務(wù)器發(fā)送的所述第二頂消息時(shí),向所述客戶端轉(zhuǎn)發(fā)所述第二頂消息;
[0044]所述客戶端,還用于接收所述目標(biāo)接入服務(wù)器發(fā)送的所述第二頂消息,并向所述應(yīng)用服務(wù)器返回所述第二確認(rèn)消息。
[0045]結(jié)合本發(fā)明實(shí)施例第三方面的第一種可能的實(shí)現(xiàn)方式中,所述至少兩條連接包括TCP連接以及第一 UDP連接,所述至少一條連接包括第二 UDP連接;
[0046]所述第一接入服務(wù)器在接收到所述應(yīng)用服務(wù)器發(fā)送的所述第二頂消息時(shí),向所述客戶端轉(zhuǎn)發(fā)所述第二頂消息的具體方式為:
[0047]在接收到所述應(yīng)用服務(wù)器發(fā)送的所述第二頂消息時(shí),通過所述TCP連接向所述客戶端轉(zhuǎn)發(fā)所述第二頂消息;
[0048]判斷在轉(zhuǎn)發(fā)所述第二頂消息后的第三預(yù)設(shè)時(shí)間段內(nèi)是否接收到所述客戶端返回的第三確認(rèn)消息,所述第三