即時群體通信方法、會話管理服務器及客戶端的制作方法
【專利摘要】本申請?zhí)峁┝艘环N即時群體通信方法、會話管理服務器及客戶端,主要內(nèi)容為:客戶端在接收到即時通信消息后,向同一群中能進行直接通信的客戶端發(fā)送所述即時通信消息,該群中其他客戶端均執(zhí)行相同的向同一群中能進行直接通信的客戶端發(fā)送所述即時通信消息的操作,使得該群中除所有客戶端均能接收到所述即時通信消息,進而將會話管理服務器監(jiān)聽并轉(zhuǎn)發(fā)即時通信消息的職能成功的轉(zhuǎn)移至群中各客戶端上,每一客戶端均承擔部分監(jiān)聽及轉(zhuǎn)發(fā)即時通信消息職能,這樣會話管理服務器不需要再進行即時通信消息的監(jiān)聽和轉(zhuǎn)發(fā)操作,很大程度上減少了會話管理服務器需要處理的數(shù)據(jù)量。
【專利說明】即時群體通信方法、會話管理服務器及客戶端
【技術(shù)領(lǐng)域】
[0001]本申請涉及網(wǎng)絡通信領(lǐng)域,尤其涉及一種即時群體通信方法、會話管理服務器及客戶端。
【背景技術(shù)】
[0002]即時群體通信是指多個客戶端以互聯(lián)網(wǎng)為媒介,以即時通信方式互相傳輸或共享文本消息、多媒體消息的通信方式。
[0003]即時群體通信是通過如圖1所示的客戶端/服務器架構(gòu)實現(xiàn)的,在這種架構(gòu)中,會話管理服務器(Content Management System, CMS)分別與每個客戶端建立連接,完成即時通信中對客戶端的登陸鑒權(quán)、接收來自客戶端的信息以及將該信息轉(zhuǎn)發(fā)給其他客戶端等職能,實現(xiàn)某一客戶端與其所在群中的其他客戶端之間的即時群體通信。
[0004]以圖1所示的架構(gòu)為例,假設(shè)客戶端A至客戶端E是屬于同一群中的客戶端,客戶端A向群中的其他客戶端發(fā)送即時通信消息的過程如下:
[0005]第一步:客戶端A向會話管理服務器發(fā)送即時通信消息,其中攜帶客戶端A所在群的群標識及客戶端A的標識。
[0006]第二步:會話管理服務器根據(jù)接收到的群標識,確定對應的群中包含的各客戶端。
[0007]第三步:會話管理服務器根據(jù)發(fā)起即時通信消息的客戶端A的標識,從確定的群內(nèi)包含的各客戶端中,確定需要接收該即時通信消息的客戶端,即客戶端B至客戶端E。
[0008]在本步驟中,會話管理服務器將群中除客戶端A外的其他客戶端作為需要接收即時通信消息的客戶端。
[0009]第四步:會話管理服務器將即時通信消息轉(zhuǎn)發(fā)給客戶端B至客戶端E,實現(xiàn)了客戶端A與同一群中的其他客戶端之間的即時群體通信。
[0010]在上述即時群體通信方式中,會話管理服務器不僅需要與群中的客戶端進行控制指令的傳遞(如登陸鑒權(quán)、群中是否有客戶端離線或是有新的客戶端登陸等),還需要對連接的客戶端發(fā)送的即時通信消息進行監(jiān)聽,并將即時通信消息轉(zhuǎn)發(fā)給群中的其他客戶端,由于會話管理服務器需要與客戶端之間實時進行控制指令以及即時通信消息的收發(fā),會話管理服務器需處理的數(shù)據(jù)量大,特別是在即時群體通信業(yè)務的高峰時段,會話管理服務器實際需處理的數(shù)據(jù)量是非常龐大的,這將會導致會話管理服務器的性能受到較大影響,甚至可能在即時群體通信業(yè)務的高峰時段無法滿足業(yè)務需求,只能通過增大會話管理服務器群的規(guī)模來滿足業(yè)務需求。
【發(fā)明內(nèi)容】
[0011]本申請實施例的目的在于,提供一種即時群體通信方法、會話管理服務器、及客戶端,以解決現(xiàn)有技術(shù)中會話管理服務器的數(shù)據(jù)處理量過大的問題。
[0012]一種即時群體通信方法,所述方法包括:
[0013]會話管理服務器確定群中參與會話的客戶端的CID ;[0014]會話管理服務器根據(jù)所述CID生成網(wǎng)絡連接配置圖1CG,所述ICG中記錄了所述客戶端之間的連接關(guān)系,且根據(jù)所述連接關(guān)系,群中的任一客戶端均能與群中除自身外的其他客戶端進行直接或間接的通信;
[0015]會話管理服務器根據(jù)所述ICG為任一客戶端分別生成本地網(wǎng)絡連接配置圖LICG,并將所述LICG下發(fā)給相應的客戶端,指示該客戶端根據(jù)下發(fā)的LICG與群中其他客戶端進行即時群體通信,所述LICG中記錄了能與所述相應的客戶端直接進行通信的其他客戶端的 CID。
[0016]一種即時群體通信方法,所述方法包括:
[0017]客戶端接收即時通信消息;
[0018]客戶端根據(jù)本地存儲的本地網(wǎng)絡連接配置圖LICG確定能與自身進行通信的其他客戶端,并將所述即時通信消息發(fā)送至確定的其他客戶端;
[0019]所述LICG是會話管理服務器根據(jù)網(wǎng)絡連接配置圖1CG生成并下發(fā)的,其中記錄了能與客戶端直接進行通信的其他客戶端的標識號CID,所述ICG中記錄了客戶端所在的群中參與會話的所有客戶端之間的連接關(guān)系,且根據(jù)所述連接關(guān)系,群中的任一客戶端均能與群中除自身外的其他客戶端進行直接或間接的通信。
[0020]一種會話管理服務器,所述會話管理服務器包括:
[0021]確定模塊,用于確定群中參與會話的客戶端的CID ;
[0022]網(wǎng)絡連接配置圖1CG生成模塊,用于根據(jù)所述CID生成ICG,所述ICG中記錄了所述客戶端之間的連接關(guān)系,且根據(jù)所述連接關(guān)系,群中的任一客戶端均能與群中除自身外的其他客戶端進行直接或間接的通信;
[0023]本地網(wǎng)絡連接配置圖LICG生成模塊,用于根據(jù)所述ICG為任一客戶端分別生成本地網(wǎng)絡連接配置圖LICG ;
[0024]發(fā)送模塊,用于將所述LICG下發(fā)給相應的參與會話的客戶端,,指示該客戶端根據(jù)下發(fā)的LICG與群中其他客戶端進行即時群體通信,所述LICG中記錄了能與所述相應的客戶端直接進行通信的其他客戶端的CID。
[0025]一種客戶端,所述客戶端包括:
[0026]接收模塊,用于接收即時通信消息;
[0027]確定模塊,用于根據(jù)本地存儲的本地網(wǎng)絡連接配置圖LICG確定能與自身進行通信的其他客戶端,所述LICG是會話管理服務器根據(jù)網(wǎng)絡連接配置圖1CG生成并下發(fā)的,其中記錄了能與客戶端直接進行通信的其他客戶端的CID,所述ICG中記錄了客戶端所在的群中參與會話的所有客戶端之間的連接關(guān)系,且根據(jù)所述連接關(guān)系,群中的任一客戶端均能與群中除自身外的其他客戶端進行直接或間接的通信;
[0028]發(fā)送模塊,用于將所述即時通信消息發(fā)送至確定的其他客戶端。
[0029]在本申請實施例的方案中,客戶端在接收到即時通信消息后,向同一群中能進行直接通信的客戶端發(fā)送所述即時通信消息,該群中其他客戶端均執(zhí)行相同的向同一群中能進行直接通信的客戶端發(fā)送所述即時通信消息的操作,使得該群中除所有客戶端均能接收到所述即時通信消息,進而將會話管理服務器監(jiān)聽并轉(zhuǎn)發(fā)即時通信消息的職能成功的轉(zhuǎn)移至群中各客戶端上,每一客戶端均承擔部分監(jiān)聽及轉(zhuǎn)發(fā)即時通信消息職能,這樣會話管理服務器不需要再進行即時通信消息的監(jiān)聽和轉(zhuǎn)發(fā)操作,大幅減少了會話管理服務器需要處理的數(shù)據(jù)量。
【專利附圖】
【附圖說明】
[0030]圖1為【背景技術(shù)】中即時群體通信系統(tǒng)架構(gòu)示意圖;
[0031]圖2為本申請實施例一中即時群體通信方法示意圖;
[0032]圖3為本申請實施例一中會話管理服務器生成的網(wǎng)絡連接配置圖示意圖;
[0033]圖4為本申請實施例一中會話管理服務器利用二叉樹算法生成的網(wǎng)絡連接配置圖不意圖;
[0034]圖5 (a)-圖5 (I)為本申請實施例一中會話管理服務器為群中各客戶端配置的本地網(wǎng)絡連接配置圖示意圖;
[0035]圖6為本申請實施例一會話管理服務器重新生成的本地網(wǎng)絡連接配置圖示意圖;
[0036]圖7為本申請實施例二中即時群體通信方法示意圖;
[0037]圖8為本申請實施例三中的即時群體通信方法示意圖;
[0038]圖9為本申請實施例三中會話管理服務器為5個客戶端生成的網(wǎng)絡連接配置圖示意圖;
[0039]圖10 Ca)-圖10 (e)為本申請實施例三中會話管理服務器為5個客戶端配置的本地網(wǎng)絡連接配置圖示意圖;
[0040]圖11為本申請實施例四中即時群體通信系統(tǒng)示意圖;
[0041]圖12為本申請實施例五中會話管理服務器的結(jié)構(gòu)示意圖;
[0042]圖13為本申請實施例六中客戶端的結(jié)構(gòu)示意圖。
【具體實施方式】
[0043]為實現(xiàn)本申請的目的,本申請實施例提出了一種即時群體通信方案,客戶端在接收到即時通信消息后,向同一群中能進行直接通信的客戶端發(fā)送所述即時通信消息,該群中其他客戶端均執(zhí)行相同的向同一群中能進行直接通信的客戶端發(fā)送所述即時通信消息的操作,使得該群中除所有客戶端均能接收到所述即時通信消息,進而將會話管理服務器監(jiān)聽并轉(zhuǎn)發(fā)即時通信消息的職能成功的轉(zhuǎn)移至群中各客戶端上,每一客戶端均承擔部分監(jiān)聽及轉(zhuǎn)發(fā)即時通信消息職能,使得會話管理服務器不用再進行即時通信消息的監(jiān)聽和轉(zhuǎn)發(fā)操作,減少了會話管理服務器需要處理的數(shù)據(jù)量,有效減輕了會話管理服務器數(shù)據(jù)處理負擔,避免了因處理的數(shù)據(jù)量大而導致的性能無法滿足業(yè)務需求的問題。
[0044]對大量即時群體通信的統(tǒng)計證明,單個成員在群體會話中活動的時間分布是比較稀疏的;群中的大多數(shù)群體成員在群體會話的大多數(shù)時段處于只接收即時通信消息而不產(chǎn)生即時通信消息的狀態(tài);對于以網(wǎng)絡聊天為主要形式的即時群體會話,平均的群體成員個數(shù)在50-200之間,成員對他人即時消息即時到達的時效性要求并不高,對他人發(fā)送的即時消息的反應和應答時間,相對于網(wǎng)絡時延而言,存在著數(shù)量級的差別。
[0045]本申請實施例的方案正是利用即時群體通信的上述特征,通過參與群體會話的客戶端之間相互轉(zhuǎn)發(fā)消息的方式,來實現(xiàn)群體間的通信。盡管這種通信方式會產(chǎn)生網(wǎng)絡時延,但因群中的成員對他人發(fā)送的即時通信消息的時效性要求不高,故不會對即時群體通信產(chǎn)生較大影響。也就是說,本申請中的通過客戶端轉(zhuǎn)發(fā)即時通信消息來實現(xiàn)即時群體通信的方式是滿足即時群體通信的對接收及發(fā)送即時通信消息的時效性的要求的。
[0046]需要說明的是,在本申請中,在描述計算機本地操作時,客戶端是指運行再本地計算機上,控制計算機硬件以協(xié)議約定的方式與會話管理服務器通信的軟件,在描述與服務器的關(guān)系時,客戶端也是運行相應軟件的計算機物理實體。
[0047]下面結(jié)合具體實施例詳細描述本申請的方案。
[0048]實施例一
[0049]如圖2所示,其為本申請實施例一中即時群體通信方法示意圖,所述方法包括:
[0050]步驟201:會話管理服務器確定群中參與會話的客戶端的標識號(ClientIDentity, CID)。
[0051]會話管理器可對其服務的每個群分配一個唯一的群標識號(ID),并針對每一個群,確定該群中參與會話的客戶端的CID,所述CID記錄了能唯一標識該客戶端的信息,如編號及客戶端的IP地址等信息。
[0052]所述客戶端的CID是該客戶端登錄時,向會話管理服務器發(fā)送的。
[0053]步驟202:會話管理服務器根據(jù)所述CID生成網(wǎng)絡連接配置圖(InternetConfiguration Graph, ICG),所述ICG中記錄了所述客戶端之間的連接關(guān)系,且根據(jù)所述連接關(guān)系,群中的任一客戶端均能與群中除自身外的其他客戶端進行直接或間接的通信。
[0054]假設(shè)會話管理服務器確定群中參與會話的12個客戶端的CID分別為A、B、C、D、E、F、G、H、1、J、K、L,則生成的ICG可以為如圖3所示,可見圖3中的連接關(guān)系保證了群中的任一客戶端均能與群中除自身外的其他客戶端進行直接或間接的通信。
[0055]其中,生成ICG可以根據(jù)需求的不同而采用不同的生成方式,例如根據(jù)客戶端的數(shù)量、各客戶端的所處的網(wǎng)絡狀況、以及設(shè)置的連接數(shù)量等生成,本申請中不限定具體的生成方式,滿足群中的任一客戶端根據(jù)生成的ICG中的連接關(guān)系均能與群中除自身外的其他客戶端進行直接或間接的通信即可。例如,可以利用數(shù)據(jù)結(jié)構(gòu)技術(shù)中生成二叉樹的算法來生成ICG,以上述12個客戶端為例,則生成的二叉樹可以為如圖4所示。
[0056]較優(yōu)的,會話管理服務器可以根據(jù)客戶端在登錄時向其上報的IP地址,根據(jù)本地存儲的IP地理信息庫,確定使用該IP地址的客戶端的地理位置,并依據(jù)確定的IP地理位置生成ICG,使得群中的客戶端能夠依據(jù)該ICG能與群中除自身外的其他客戶端進行直接或間接的通信所使用的耗時較短。
[0057]步驟203:會話管理服務器根據(jù)所述ICG為任一客戶端分別生成本地網(wǎng)絡連接配置圖LICG,并將所述LICG下發(fā)給相應的客戶端。
[0058]仍以上圖4中的ICG為例,在本步驟203中,會話管理服務器為12個客戶端分別生成的LICG可以如圖5 (a)-圖5 (I)所示。
[0059]步驟204:會話管理服務器指示該客戶端根據(jù)下發(fā)的LICG與群中其他客戶端進行即時群體通信,所述LICG中記錄了能與所述相應的客戶端直接進行通信的其他客戶端的CID。
[0060]在本申請實施例一的方案中,由于會話管理服務器為群中的客戶端下發(fā)了 LICG,群中的客戶端均能根據(jù)會話管理服務器為自身下發(fā)的LICG與其他客戶端進行通信,進而使得群中任一客戶端均能直接或間接的接收到該群中的客戶端產(chǎn)生的任一即時通信消息,也即本實施例一的方法既實現(xiàn)了即時群體通信,同時又減少了會話管理服務器的對即時通信消息進行監(jiān)聽及轉(zhuǎn)發(fā)所帶來的資源消耗。
[0061]考慮到在進行即時群體通信時,客戶端之間的即時通信消息的傳遞過程可能因網(wǎng)絡狀況不佳而導致即時通信消息在傳遞過程中丟失,沒有發(fā)送到相應的客戶端,或者由于有客戶端退出群體會話,該退出會話的客戶端就不能進行消息的接收及轉(zhuǎn)發(fā)操作,就可能會導致即時通信消息不能被發(fā)送到群中的某些客戶端,故,較優(yōu)的,會話管理服務器接收客戶端上報的發(fā)送失敗報告,所述發(fā)送失敗報告是該客戶端在向其他客戶端發(fā)送即時通信消息失敗時產(chǎn)生的,包含消息接收方的CID。
[0062]會話管理服務器在接收到針對同一 CID的發(fā)送失敗報告的數(shù)量達到閾值時,對該CID對應的客戶端進行處理。
[0063]所述對CID對應的客戶端進行處理,可以為直接確定該客戶端退出了群體會話,并重新生成ICG,以及根據(jù)重新生成的ICG重新為群中參與會話的各客戶端生成LICG。
[0064]較優(yōu)的,會話管理服務器對該CID對應的客戶端進行處理,具體包括:
[0065]會話管理服務器對該CID對應的客戶端發(fā)送測試指令,并在可容忍的時延內(nèi)沒有接收到該客戶端返回的應答指令時,確定該客戶端當前未參與群中的會話,并重新生成ICG,以及根據(jù)重新生成的ICG重新為群中參與會話的各客戶端生成LICG。
[0066]較優(yōu)的,會話管理服務器為群中的客戶端重新分配LICG后,可以比較之前客戶端舊的LICG與重新分配的LICG是否相同,對于LICG不同的客戶端,會話管理服務器將重新分配的LICG發(fā)送給客戶端,要求客戶端更新LICG ;對于LICG相同的客戶端,會話管理服務器可不要求客戶端進行LICG的更新。
[0067]考慮到當有新客戶端加入群或群中原有的客戶端開始參與會話時,由于原有的ICG中并未記錄所述新客戶端加入群或群中原有的客戶端與該群中其他參與會話的客戶端之間的連接關(guān)系,無法依據(jù)原有的ICG為其分配LICG,也就導致不能與其所在的群中的其他客戶端進行即時通信,故較優(yōu)的,當有新客戶端加入群或群中原有的客戶端開始參與會話時,會話管理服務器將所述新客戶端或所述群中原有的客戶端作為群中參與會話的客戶端,并重新生成ICG,以及根據(jù)新生成的ICG重新為群中參與會話的各客戶端配置LICG。
[0068]在上圖4的基礎(chǔ)上,若有新的客戶端M開始參與會話,此時會話管理服務器重新生成的ICG可以為圖6所示。
[0069]實施例二
[0070]如圖7所示,其為本申請實施例二中即時群體通信方法,所述方法包括:
[0071]步驟301:客戶端接收即時通信消息。
[0072]所述即時通信消息可以是用戶輸入該客戶端的,也可以是其他客戶端發(fā)送給所述客戶端的。
[0073]較優(yōu)的,所述即時通信消息中攜帶了根據(jù)創(chuàng)建該消息時生成的本地消息標識號(Local Message Identity, LMID)與創(chuàng)建該消息的客戶端的CID生成的全局消息標識號(Global Message Identity, GMID)。
[0074]步驟302:客戶端根據(jù)會話協(xié)議判斷當前接收到的即時通信消息是否是已經(jīng)接收過的即時通信消息,若是,則執(zhí)行步驟303 ;若否,則執(zhí)行步驟304。
[0075]在本步驟302中,客戶端可以通過將當前接收到的即時通信消息與本地存儲的已接收的即時通信消息進行比較,根據(jù)比較結(jié)果判斷當前接收到的即時通信消息是否是已經(jīng)接收過的即時通信消息。
[0076]較優(yōu)的,客戶端可通過即時通信消息中攜帶的GMID,判斷本地維護的入棧消息隊列(Incoming Message Queue, IMQ)中是否已存在所述GMID的方式來判斷本地是否已接收過該即時通信消息,所述MQ中記錄了已接收到的即時通信消息的GMID以及該即時通信消息的來源客戶端的CID。
[0077]步驟303:客戶端不再將當前接收到的即時通信消息發(fā)送至其他客戶端,丟棄所述即時通信消息,結(jié)束本次即時群體通信過程。
[0078]需要說明的是,步驟302和步驟303是本實施例二的優(yōu)選方案,目的是為了盡可能的減少客戶端重復接收到某一即時通信消息的次數(shù)。
[0079]步驟304:客戶端存儲所述即時通信消息。
[0080]在上述步驟302中,當判斷結(jié)果為已接收過該即時通信消息時,并不局限于丟棄所述即時通信消息這一種處理措施,也可以采取判斷是否已轉(zhuǎn)發(fā)過該即時通信消息,若沒有轉(zhuǎn)發(fā)過,則執(zhí)行步驟304,若已經(jīng)轉(zhuǎn)發(fā)過,則不再轉(zhuǎn)發(fā)該即時通信消息,可避免同一條即時通信消息在群中的客戶端之間被無休止的轉(zhuǎn)發(fā)。
[0081]為了保證客戶端發(fā)出的即時通信消息能夠到達群中的所有客戶端,會話管理服務器為各客戶端分配的LICG總和往往是冗余的,就會導致出現(xiàn)客戶端重復接收到同一即時通信消息的情況,在步驟302中,可以對接收到的即時通信消息是否重復接收以及是否重復轉(zhuǎn)發(fā)的判斷,并采取相應措施,進而避免了重復接收、轉(zhuǎn)發(fā)同一即時通信消息的情況。
[0082]本步驟304存儲所述即時通信消息的操作是優(yōu)選操作,本申請實施例的方案中也可以不存儲所述即時通信消息,而只存儲所述即時通信消息的GMID以及該即時通信消息發(fā)送方的CID,并將這些信息放置在本地維護的IMQ隊列中。
[0083]需要說明的是,步驟304是本實施例二的優(yōu)選方案,目的是為了利用已存儲的即時通信消息的GMID以及發(fā)送該即時通信消息的CID,在下次執(zhí)行步驟302時用以判斷每次接收到的即時通信消息是否是重復接收的即時通信消息,避免重復接收、轉(zhuǎn)發(fā)即時通信消
肩、O
[0084]步驟305:客戶端讀取所述即時通信消息的內(nèi)容,將其在本地的輸出界面顯示。
[0085]步驟306:客戶端根據(jù)本地存儲的本地網(wǎng)絡連接配置圖LICG確定能與自身進行通信的其他客戶端。
[0086]所述LICG是會話管理服務器根據(jù)網(wǎng)絡連接配置圖1CG生成并下發(fā)的,其中記錄了能與客戶端直接進行通信的其他客戶端的CID,所述ICG中記錄了客戶端所在的群中參與會話的所有客戶端之間的連接關(guān)系,且根據(jù)所述連接關(guān)系,群中的任一客戶端均能與群中除自身外的其他客戶端進行直接或間接的通信。
[0087]步驟307:客戶端將所述即時通信消息發(fā)送至確定的其他客戶端。
[0088]較優(yōu)的,在本步驟307中,客戶端將自身的CID攜帶在所述即時通信消息中,并將攜帶了自身CID的即時通信消息發(fā)送出去,以便于該群中其他接收到所述即時通信消息的客戶端可以根據(jù)所述即時通信消息中攜帶的CID,確定該CID對應的客戶端已經(jīng)接收到了所述即時通信消息,不再將所述即時通信消息轉(zhuǎn)發(fā)給該CID對應的客戶端。
[0089]步驟308:客戶端根據(jù)會話協(xié)議判斷是否成功發(fā)送所述即時通信消息,若否,則執(zhí)行步驟309,若是,則結(jié)束本次即時通信過程。[0090]較優(yōu)的,在本步驟308中,在客戶端根據(jù)會話協(xié)議判斷是成功發(fā)送所述即時通信消息,將所述即時通信消息的GMID以及成功接收該即時通信消息的CID保存在本地維護的出棧消息隊列(Outgoing Message Queue7OMQ)隊列中,表示該客戶端已完成對當前生成的即時通信消息的發(fā)送過程。
[0091]步驟309:客戶端向會話管理服務器上報發(fā)送失敗報告,所述發(fā)送失敗報告中包含消息接收方的CID。
[0092]考慮到當群中有新的客戶端加入、群中的原有客戶端開始參與會話或原來參與會話的客戶端退出會話,會話管理服務器會重新生成ICG,并根據(jù)所述ICG重新下發(fā)LICG,為確??蛻舳烁鶕?jù)LICG能成功的與該LICG中的其他客戶端進行即時群體通信,較優(yōu)的,客戶端在接收到會話管理服務器下發(fā)的LICG時,根據(jù)接收到的LICG中記錄的CID,與該CID對應的客戶端之間進行連接測試。
[0093]較優(yōu)的,客戶端接收到會話管理服務器重新配置的LICG,將其與本地存儲的LICG進行比較,確定出應當建立連接的客戶端,并嘗試與之建立連接。
[0094]上述確定出的應當建立連接的客戶端是重新配置的LICG中記錄了但本地存儲的LICG中沒有的CID號對應的客戶端。僅當該客戶端與所有應當建立連接的客戶端均連接成功時,該客戶端才斷開與本地存儲的LICG中有而重新配置的LICG中沒有的CID對應的客戶端的連接。若上述建立連接的過程中,發(fā)生連接失敗,則該客戶端向會話管理服務器發(fā)送連接失敗報告。
[0095]較優(yōu)的,由于新的客戶端對其接收到的LICG中的CID對應的客戶端之間進行了連接測試,因此,所述群中原各客戶端的LICG中包含所述新客戶端的CID的客戶端,無需與所述新客戶端進行連接測試。
[0096]所述新客戶端與LICG中記錄的CID對應的客戶端之間進行連接測試,具體包括:
[0097]第一步,新客戶端判斷是否能與LICG中記錄的CID中的N個標識對應的客戶端之間建立連接,若是,則執(zhí)行第二步;若否,則執(zhí)行第三步。
[0098]在上述第一步中,會話管理服務器向新客戶端發(fā)送的LICG中記錄的CID是冗余的,也就是說所述LICG中記錄的CID的數(shù)量大于會話管理服務器確定的該新客戶端與其他客戶端進行通信的必要連接數(shù)目N。因為會話管理服務器不能保證給所述新客戶端發(fā)送的LICG中的CID對應的客戶端均能與所述新客戶端成功建立連接。
[0099]第二步,新客戶端將LICG中除所述N個標識外的其他CID刪除。
[0100]在上述第二步中,客戶端在嘗試與LICG中的CID對應的客戶端建立連接的過程中,會對已經(jīng)連接成功的客戶端進行記錄,當能夠成功建立連接的客戶端的數(shù)量達到會話管理服務器確定的該新客戶端與其他客戶端進行通信的必要連接數(shù)目N時,可不再嘗試連接LICG中其他的CID號對應的客戶端。
[0101]第三步,新客戶端向會話管理服務器發(fā)送請求消息,請求會話管理服務器重新為該新客戶端分配LICG,并利用重新分配的LICG執(zhí)行連接測試。
[0102]較優(yōu)的,會話管理服務器為新客戶端分配的LICG中記錄的CID,是按照對應的客戶端傳輸時延進行排列的。
[0103]新客戶端判斷是否能與LICG中記錄的CID中的N個標識對應的客戶端之間建立連接,具體包括:[0104]新客戶端按照傳輸時延由短至長的順序,依次判斷是否能與LICG中的N個標識對應的客戶端之間建立連接。
[0105]所述新客戶端在連接測試完成之后,將測試結(jié)果發(fā)送給會話管理服務器,會話管理服務器根據(jù)測試結(jié)果,更新該群的ICG,并發(fā)送確認消息至該客戶端,確認該新客戶端可以參與正常的會話。
[0106]實施例三
[0107]為詳細說明本申請實施例二的方案,本實施例三以下以圖8所示的同一群中的客戶端以及各客戶端之間的連接關(guān)系為例,說明客戶端之間是如何進行即時通信的。
[0108]在圖8所示的群中,各參與會話的客戶端的標識號分別為A、B、C、D、E。各客戶端之間連接關(guān)系是由會話管理服務器中的ICG決定的,可以為圖9所示。
[0109]由圖9所示的連接關(guān)系可知:
[0110]能與客戶端A直接進行通信的客戶端為客戶端B和客戶端C ;
[0111]能與客戶端B直接進行通信的客戶端為客戶端A、客戶端C和客戶端D ;
[0112]能與客戶端C直接進行通信的客戶端為客戶端A、客戶端B、客戶端D和客戶端E ;
[0113]能與客戶端D直接進行通信的客戶端為客戶端B、客戶端C和客戶端E ;
`[0114]能與客戶端E直接進行通信的客戶端為客戶端C和客戶端D。
[0115]會話管理服務器為上述各客戶端下發(fā)的LICG也即為圖10 (a)_圖10 (e)所示。
[0116]假設(shè)創(chuàng)建即時通信消息的客戶端為客戶端A,則其確定的能夠與該群中進行通信的客戶端為客戶端B和客戶端C,并將所述即時通信消息發(fā)送給客戶端B和客戶端C。
[0117]客戶端B將所述即時通信消息轉(zhuǎn)發(fā)給客戶端C和客戶端D,客戶端C將所述即時通信消息轉(zhuǎn)發(fā)給客戶端D、客戶端E和客戶端B。
[0118]此時,由于客戶端C已接收過來自客戶端A的即時通信消息,因此,不再接收來自客戶端B的同一即時通信消息;客戶端D會接收到來自客戶端B和客戶端C的同一即時通信消息,為了避免重復接收,客戶端D可接收先到達的即時通信消息(如接收來自客戶端B的即時通信消息),不再接收后到達的同一即時通信消息(如不再接收來自客戶端C的即時通?目消息)。
[0119]當客戶端D、客戶端E接收到所述即時通信消息后,客戶端D和客戶端E進行即時通信消息的發(fā)送操作。
[0120]由于客戶端D和客戶端E之前沒有執(zhí)行過針對該即時通信消息的轉(zhuǎn)發(fā)操作,因此,客戶端D將所述即時通信消息發(fā)送給客戶端C和客戶端E (由于客戶端D是從客戶端B處獲得的所述即時通信消息,因此客戶端D不再向客戶端B發(fā)送)。由于客戶端C和客戶端E已接收該即時通信消息,因此,不再轉(zhuǎn)發(fā)該即時通信消息。
[0121]客戶端E將所述即時通信消息向下游客戶端發(fā)送的過程與客戶端D類似。
[0122]至此,群中所有客戶端都接收到了所述即時通信消息,實現(xiàn)了即時群體通信過程。
[0123]實施例四
[0124]如圖11所示,為本申請實施例四的一種即時群體通信系統(tǒng)示意圖,所述系統(tǒng)包括會話管理服務器11和至少兩個參與會話的客戶端12,其中:
[0125]會話管理服務器11,用于確定群中參與會話的客戶端的CID,根據(jù)所述CID生成網(wǎng)絡連接配置圖1CG,以及根據(jù)所述ICG為任一客戶端生成本地網(wǎng)絡連接配置圖LICG,并將所述LICG下發(fā)給相應的客戶端,所述ICG中記錄了所述客戶端之間的連接關(guān)系,且根據(jù)所述連接關(guān)系,群中的任一客戶端均能與群中除自身外的其他客戶端進行直接或間接的通信,所述LICG中記錄了能與相應的客戶端直接進行通信的其他客戶端的CID。
[0126]任一參與會話的客戶端12,用于接收即時通信消息,以及根據(jù)本地存儲的本地網(wǎng)絡連接配置圖LICG確定能與自身進行通信的其他客戶端,并將所述即時通信消息發(fā)送至確定的其他客戶端;
[0127]所述參與會話的客戶端12,還用于在接收即時通信消息后,判斷當前接收到的即時通信消息是否是已經(jīng)接收過的即時通信消息,若是,則不再將當前接收到的即時通信消息發(fā)送至其他客戶端,若否,則執(zhí)行將當前接收到的即時通信消息發(fā)送至確定的其他客戶端的操作。
[0128]較優(yōu)的,所述參與會話的客戶端12,還用于在沒有成功發(fā)送即時通信消息時,向會話管理服務器上報發(fā)送失敗報告,所述發(fā)送失敗報告中包含消息接收方的CID ;
[0129]所述會話管理服務器11,還用于接收客戶端上報的發(fā)送失敗報告,并在接收到針對同一 CID的發(fā)送失敗報告的數(shù)量達到閾值時,對該CID對應的客戶端進行處理。
[0130]較優(yōu)的,所述會話管理服務器11,具體用于在接收到針對同一 CID的發(fā)送失敗報告的數(shù)量達到閾值時,對該CID對應的客戶端發(fā)送測試指令,并在可容忍的時延內(nèi)沒有接收到該客戶端返回的應答指令時,確定該客戶端當前未參與群中的會話,并重新生成ICG,以及根據(jù)新生成的ICG重新為群中參與會話的各客戶端配置LICG。
[0131]在圖11中,會話管理服務器11與客戶端之間消息的交互(也即指令傳輸)用虛線表示;客戶端之間消息的交互(也即數(shù)據(jù)傳輸)用實線表示。
[0132]較優(yōu)的,所述會話管理服務器11,還用于在有新客戶端加入群或群中原有的客戶端開始參與會話時,將所述新客戶端或所述群中原有的客戶端作為群中參與會話的客戶端,并重新生成ICG,以及根據(jù)新生成的ICG重新為群中參與會話的各客戶端配置LICG ;
[0133]較優(yōu)的,所述新客戶端,具體用于判斷是否能與LICG中記錄的CID中的N個標識對應的客戶端之間建立連接;若是,則新客戶端將LICG中除所述N個標識外的其他CID刪除;若否,則新客戶端向會話管理服務器發(fā)送請求消息,請求會話管理服務器重新為該新客戶端分配LICG,并利用重新分配的LICG執(zhí)行連接測試。
[0134]較優(yōu)的,所述會話管理服務器11,具體用于為新客戶端分配CID按照對應的客戶端傳輸時延排列的LICG ;
[0135]所述新客戶端,具體用于按照傳輸時延由短至長的順序,依次判斷是否能與LICG中的N個標識對應的客戶端之間建立連接。
[0136]所述客戶端,還用于在接收到會話管理服務器下發(fā)的LICG時,根據(jù)接收到的LICG中記錄的CID,與該CID對應的客戶端之間進行連接測試。
[0137]實施例五
[0138]如圖12所示,為本申請實施例五的一種會話管理服務器的結(jié)構(gòu)示意圖,所述會話管理服務器包括:確定模塊21、ICG生成模塊22、LICG生成模塊23和發(fā)送模塊24。
[0139]確定模塊21,用于確定群中參與會話的客戶端的CID。
[0140]ICG生成模塊22,用于根據(jù)所述CID生成ICG,所述ICG中記錄了所述客戶端之間的連接關(guān)系,且根據(jù)所述連接關(guān)系,群中的任一客戶端均能與群中除自身外的其他客戶端進行直接或間接的通信;
[0141]LICG生成模塊23,用于根據(jù)所述ICG為任一客戶端分別生成本地網(wǎng)絡連接配置圖LICG ;
[0142]發(fā)送模塊24,用于將所述LICG下發(fā)給相應的參與會話的客戶端,,指示該客戶端根據(jù)下發(fā)的LICG與群中其他客戶端進行即時群體通信,所述LICG中記錄了能與所述相應的客戶端直接進行通信的其他客戶端的CID。
[0143]較優(yōu)的,所述會話管理服務器還包括:
[0144]接收模塊25,用于接收客戶端上報的發(fā)送失敗報告,所述發(fā)送失敗報告是該客戶端在向其他客戶端發(fā)送即時通信消息失敗時產(chǎn)生的,包含消息接收方的CID ;
[0145]處理模塊26,用于在接收到針對同一 CID的發(fā)送失敗報告的數(shù)量達到閾值時,對該CID對應的客戶端進行處理。
[0146]較優(yōu)的,所述處理模塊26,具體用于在接收到針對同一 CID的發(fā)送失敗報告的數(shù)量達到閾值時,對該CID對應的客戶端發(fā)送測試指令,并在可容忍的時延內(nèi)沒有接收到該客戶端返回的應答指令時,確定該客戶端當前未參與群中的會話,并觸發(fā)所述確定模塊21。
[0147]較優(yōu)的,所述確定模塊21,具體用于當有新客戶端加入群或群中原有的客戶端開始參與會話時,將所述新客戶端或所述群中原有的客戶端作為群中參與會話的客戶端,確定所述新客戶端或所述群中原有的客戶端的CID,并觸發(fā)所述ICG生成模塊。
[0148]實施例六
[0149]如圖13所示,為本申請實施例六的一種客戶端結(jié)構(gòu)示意圖,所述客戶端包括:接收模塊31、確定模塊32和發(fā)送模塊33。其中:
[0150]接收模塊31,用于接收即時通信消息;
[0151]確定模塊32,用于根據(jù)本地存儲的本地網(wǎng)絡連接配置圖LICG確定能與自身進行通信的其他客戶端,所述LICG是會話管理服務器根據(jù)網(wǎng)絡連接配置圖1CG生成并下發(fā)的,其中記錄了能與客戶端直接進行通信的其他客戶端的CID,所述ICG中記錄了客戶端所在的群中參與會話的所有客戶端之間的連接關(guān)系,且根據(jù)所述連接關(guān)系,群中的任一客戶端均能與群中除自身外的其他客戶端進行直接或間接的通信;
[0152]發(fā)送模塊33,用于將所述即時通信消息發(fā)送至確定的其他客戶端。
[0153]較優(yōu)的,所述客戶端還包括:
[0154]判斷模塊34,用于判斷當前接收到的即時通信消息是否是已經(jīng)接收過的即時通信消息,并在判斷結(jié)果為否時,觸發(fā)所述確定模塊32。
[0155]較優(yōu)的,所述判斷模塊34,還用于判斷即時通信消息是否發(fā)送成功,在沒有發(fā)送成功時,觸發(fā)所述發(fā)送模塊33;
[0156]所述發(fā)送模塊33,還用于向會話管理服務器上報發(fā)送失敗報告,所述發(fā)送失敗報告中包含消息接收方的CID。
[0157]較優(yōu)的,所述接收模塊31,還用于接收會話管理服務器發(fā)送的LICG ;
[0158]所述客戶端還包括:
[0159]測試模塊35,用于根據(jù)所述LICG中記錄的CID,與該CID對應的客戶端之間進行連接測試。
[0160]較優(yōu)的,所述測試模塊35具體包括:[0161]判斷單元42,用于判斷是否能與LICG中記錄的CID中的N個標識對應的客戶端之間建立連接。
[0162]刪除單元41,用于在判斷單元42的判斷結(jié)果為是時,將LICG中除所述N個標識外的其他CID刪除。
[0163]請求單元43,用于在判斷單元42的判斷結(jié)果為否時,請求會話管理服務器重新為該新客戶端分配LICG。
[0164]較優(yōu)的,所述判斷單元42,具體用于在接收模塊接收的LICG中記錄的CID是按照對應的客戶端傳輸時延進行排列時,按照傳輸時延由短至長的順序,依次判斷是否能與LICG中的N個標識對應的客戶端之間建立連接。
[0165]本領(lǐng)域內(nèi)的技術(shù)人員應明白,本申請的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學存儲器等)上實施的計算機程序產(chǎn)品的形式。
[0166]本申請是參照根據(jù)本申請實施例的方法、設(shè)備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
[0167]這些計算機程序指令也可存儲在能引導計算機或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
[0168]這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
[0169]盡管已描述了本申請的優(yōu)選實施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例做出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實施例以及落入本申請范圍的所有變更和修改。
[0170]顯然,本領(lǐng)域的技術(shù)人員可以對本申請進行各種改動和變型而不脫離本申請的精神和范圍。這樣,倘若本申請的這些修改和變型屬于本申請權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本申請也意圖包含這些改動和變型在內(nèi)。
【權(quán)利要求】
1.一種即時群體通信方法,其特征在于,所述方法包括: 會話管理服務器確定群中參與會話的客戶端的標識號CID ; 會話管理服務器根據(jù)所述CID生成網(wǎng)絡連接配置圖1CG,所述ICG中記錄了所述客戶端之間的連接關(guān)系,且根據(jù)所述連接關(guān)系,群中的任一客戶端均能與群中除自身外的其他客戶端進行直接或間接的通信; 會話管理服務器根據(jù)所述ICG為任一客戶端分別生成本地網(wǎng)絡連接配置圖LICG,并將所述LICG下發(fā)給相應的客戶端,指示該客戶端根據(jù)下發(fā)的LICG與群中其他客戶端進行即時群體通信,所述LICG中記錄了能與所述相應的客戶端直接進行通信的其他客戶端的CID。
2.如權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 會話管理服務器接收客戶端上報的發(fā)送失敗報告,所述發(fā)送失敗報告是該客戶端在向其他客戶端發(fā)送即時通信消息失敗時產(chǎn)生的,包含消息接收方的CID ; 會話管理服務器在接收到針對同一 CID的發(fā)送失敗報告的數(shù)量達到閾值時,對該CID對應的客戶端進行處理。
3.如權(quán)利要求2所述的方法,其特征在于,會話管理服務器對該CID對應的客戶端進行處理,具體包括: 會話管理服務器對該CID對應的客戶端發(fā)送測試指令,并在可容忍的時延內(nèi)沒有接收到該客戶端返回的應答指令時,確定該客戶端當前未參與群中的會話,并重新生成ICG,以及根據(jù)重新生成的ICG重新為群中參與會話的各客戶端生成LICG。
4.如權(quán)利要求1所述 的方法,其特征在于,所述方法還包括: 當有新客戶端加入群或群中原有的客戶端開始參與會話時,會話管理服務器將所述新客戶端或所述群中原有的客戶端作為群中參與會話的客戶端,并重新生成ICG,以及根據(jù)新生成的ICG重新為群中參與會話的各客戶端配置LICG。
5.一種即時群體通信方法,其特征在于,所述方法包括: 客戶端接收即時通信消息; 客戶端根據(jù)本地存儲的本地網(wǎng)絡連接配置圖LICG確定能與自身進行通信的其他客戶端,并將所述即時通信消息發(fā)送至確定的其他客戶端; 所述LICG是會話管理服務器根據(jù)網(wǎng)絡連接配置圖1CG生成并下發(fā)的,其中記錄了能與客戶端直接進行通信的其他客戶端的標識號CID,所述ICG中記錄了客戶端所在的群中參與會話的所有客戶端之間的連接關(guān)系,且根據(jù)所述連接關(guān)系,群中的任一客戶端均能與群中除自身外的其他客戶端進行直接或間接的通信。
6.如權(quán)利要求5所述的方法,其特征在于,在接收即時通信消息后,所述方法還包括: 客戶端判斷當前接收到的即時通信消息是否是已經(jīng)接收過的即時通信消息; 若是,則不再將當前接收到的即時通信消息發(fā)送至其他客戶端; 若否,執(zhí)行將當前接收到的即時通信消息發(fā)送至確定的其他客戶端的操作。
7.如權(quán)利要求5所述的方法,其特征在于,所述方法還包括: 客戶端在沒有成功發(fā)送即時通信消息時,向會話管理服務器上報發(fā)送失敗報告,所述發(fā)送失敗報告中包含消息接收方的CID。
8.如權(quán)利要求5所述的方法,其特征在于,所述方法還包括:客戶端在接收到會話管理服務器下發(fā)的LICG時,根據(jù)接收到的LICG中記錄的CID,與該CID對應的客戶端之間進行連接測試。
9.一種會話管理服務器,其特征在于,所述會話管理服務器包括: 確定模塊,用于確定群中參與會話的客戶端的標識號CID ; 網(wǎng)絡連接配置圖1CG生成模塊,用于根據(jù)所述CID生成ICG,所述ICG中記錄了所述客戶端之間的連接關(guān)系,且根據(jù)所述連接關(guān)系,群中的任一客戶端均能與群中除自身外的其他客戶端進行直接或間接的通信; 本地網(wǎng)絡連接配置圖LICG生成模塊,用于根據(jù)所述ICG為任一客戶端分別生成本地網(wǎng)絡連接配置圖LICG ; 發(fā)送模塊,用于將所述LICG下發(fā)給相應的參與會話的客戶端,指示該客戶端根據(jù)下發(fā)的LICG與群中其他客戶端進行即時群體通信,所述LICG中記錄了能與所述相應的客戶端直接進行通信的其他客戶端的CID。
10.一種客戶端,其特征在于,所述客戶端包括: 接收模塊,用于接收即時通信消息; 確定模塊,用于根據(jù)本地存儲的本地網(wǎng)絡連接配置圖LICG確定能與自身進行通信的其他客戶端,所述LICG是會話管理服務器根據(jù)網(wǎng)絡連接配置圖1CG生成并下發(fā)的,其中記錄了能與客戶端直接進行 通信的其他客戶端的標識號CID,所述ICG中記錄了客戶端所在的群中參與會話的所有客戶端之間的連接關(guān)系,且根據(jù)所述連接關(guān)系,群中的任一客戶端均能與群中除自身外的其他客戶端進行直接或間接的通信; 發(fā)送模塊,用于將所述即時通信消息發(fā)送至確定的其他客戶端。
【文檔編號】H04L12/58GK103428070SQ201210154063
【公開日】2013年12月4日 申請日期:2012年5月17日 優(yōu)先權(quán)日:2012年5月17日
【發(fā)明者】李濤 申請人:阿里巴巴集團控股有限公司