本發(fā)明涉及一種網(wǎng)絡(luò)數(shù)據(jù)技術(shù)領(lǐng)域,特別是涉及一種即時(shí)通訊擴(kuò)展方法及系統(tǒng)。
背景技術(shù):
現(xiàn)如今,隨著科技的進(jìn)步和發(fā)展,互聯(lián)網(wǎng)取得了飛速的發(fā)展,而隨著互聯(lián)網(wǎng)網(wǎng)站的瀏覽量越發(fā)龐大,現(xiàn)有的即時(shí)通訊類型的信息傳輸存在難以支持更多用戶、無(wú)法穩(wěn)定完成信息傳輸任務(wù)等問(wèn)題;
如何在同樣硬件條件下支持更多的用戶成為本領(lǐng)域技術(shù)人員亟待解決的問(wèn)題。
應(yīng)該注意,上面對(duì)技術(shù)背景的介紹只是為了方便對(duì)本申請(qǐng)的技術(shù)方案進(jìn)行清楚、完整的說(shuō)明,并方便本領(lǐng)域技術(shù)人員的理解而闡述的。不能僅僅因?yàn)檫@些方案在本申請(qǐng)的背景技術(shù)部分進(jìn)行了闡述而認(rèn)為上述技術(shù)方案為本領(lǐng)域技術(shù)人員所公知。
技術(shù)實(shí)現(xiàn)要素:
有鑒于現(xiàn)有技術(shù)的上述缺陷,本發(fā)明所要解決的技術(shù)問(wèn)題是提供一種能夠在同樣的硬件條件下支持更多用戶端的即時(shí)通訊方法及系統(tǒng)。
為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種即時(shí)通訊擴(kuò)展方法,包括步驟:
用戶端與Webcocket服務(wù)器建立連接,并加入特定的通訊群;
Websocket服務(wù)器和XMPP服務(wù)器建立連接;
XMPP服務(wù)器發(fā)送的XMPP信息將通過(guò)Websocket服務(wù)器同步轉(zhuǎn)發(fā)給通訊群對(duì)應(yīng)的用戶端。
進(jìn)一步的,Websocket服務(wù)器對(duì)通過(guò)它傳遞的數(shù)據(jù)作出壓縮處理、轉(zhuǎn)碼處理和加密處理中的至少一種處理。壓縮處理可以加快信息處理速度,提高信息處理效率;轉(zhuǎn)碼處理可以使得用戶端獲取格式適合的信息,以滿足更多種類型的用戶端,提高適用范圍;加密處理提高信息的安全度;另外,最好可以是先轉(zhuǎn)碼加密,再行壓縮處理,之后再進(jìn)行轉(zhuǎn)發(fā),保證信息轉(zhuǎn)發(fā)的可靠性。
進(jìn)一步的,所述轉(zhuǎn)碼處理包括音視頻格式轉(zhuǎn)換。優(yōu)于不同的用戶端的要求不同,其中音視頻格式就是其中較為關(guān)鍵的部分,在轉(zhuǎn)發(fā)前進(jìn)行格式轉(zhuǎn)換,有利于提高用戶體驗(yàn),避免接收到無(wú)法有效播放的視頻。
進(jìn)一步的,Websocket服務(wù)器對(duì)通過(guò)它傳遞的數(shù)據(jù)基于文件散列編碼提供緩存服務(wù)。對(duì)于大批量數(shù)據(jù)的處理,webscoekt 服務(wù)器可以提供緩沖功能來(lái)減少傳輸量;對(duì)于其他數(shù)據(jù),也可以進(jìn)行緩存,避免本地信息缺失而無(wú)法尋回的情況發(fā)生;同時(shí),由于系統(tǒng)的殊性,緩存管理需要基于文件散列編碼來(lái)管理,而不是傳統(tǒng)的文件名或者其他形式;由于系統(tǒng)是作為信息系統(tǒng)交互的中間環(huán)節(jié),系統(tǒng)處理的信息是已經(jīng)編碼過(guò)的數(shù)據(jù)流。這些數(shù)據(jù)流在存儲(chǔ)到緩存系統(tǒng)中以后,需要一種有效的識(shí)別手段來(lái)提高緩沖的效率。特別地,在特殊情況下,不同用戶提交的數(shù)據(jù)流可能是重復(fù)的,但是由于來(lái)自不同的用戶,這種重復(fù)很難通過(guò)傳統(tǒng)的文件名稱,或者其他標(biāo)示來(lái)識(shí)別。這里,我們通過(guò)對(duì)數(shù)據(jù)進(jìn)行MD5散列編碼計(jì)算的方式來(lái)判斷數(shù)據(jù)的重復(fù),以取得最大化的緩存效果;基于上訴特點(diǎn)產(chǎn)生的編碼可以作為緩存數(shù)據(jù)的存儲(chǔ)標(biāo)示,來(lái)保證緩存作用的最大化,可以極大地提高數(shù)據(jù)傳輸效率。
進(jìn)一步的,所述Websocket服務(wù)器是作為XMPP服務(wù)器的其中一個(gè)用戶而存在的。
進(jìn)一步的,所述用戶端包括HTML用戶端、Javascript用戶端、Android用戶端、Java用戶端和iOS用戶端中的至少一種。Websocket與下游用戶的聯(lián)接是單向廣播形式,相對(duì)于雙向的即時(shí)通訊如XMPP協(xié)議,存在支持大并發(fā)量的優(yōu)勢(shì),但對(duì)于某些用戶來(lái)說(shuō),Websocket與下游用戶的聯(lián)接并不能滿足其通訊需求,XMPP服務(wù)器同時(shí)支持其他用戶的存在,可以根據(jù)需求不同,而作為直接用戶或者通過(guò)Websocket成為下游用戶。
進(jìn)一步的,若XMPP服務(wù)器存在XMPP群,則Websocket服務(wù)器建立對(duì)應(yīng)XMPP群的通訊群。對(duì)每個(gè)XMPP的群,Webscoekt服務(wù)器會(huì)建立一個(gè)對(duì)應(yīng)的群,Websocket 提供一個(gè)XMPP消息轉(zhuǎn)發(fā)機(jī)制來(lái)保證XMPP的群消息會(huì)正確的轉(zhuǎn)發(fā)給加入了該通訊群的所有客戶端。
一種即時(shí)通訊擴(kuò)展系統(tǒng),包括:
XMPP服務(wù)器,用于向外發(fā)送XMPP信息;
Websocket服務(wù)器,用于與所述XMPP服務(wù)器建立連接,并接收所述XMPP信息;同時(shí),與用戶端建立連接,并在將用戶端加入特定的通訊群后,并將XMPP信息轉(zhuǎn)發(fā)給用戶端;
用戶端,用于接收Websocket服務(wù)器轉(zhuǎn)發(fā)的XMPP信息。Websockt服務(wù)器負(fù)責(zé)根據(jù)需要提供加密的,可靠的連接方式,和用戶認(rèn)證機(jī)制;同時(shí)服務(wù)器還提供高效的通訊群機(jī)制來(lái)保證消息轉(zhuǎn)發(fā)的一致性。
進(jìn)一步的,所述即時(shí)通訊擴(kuò)展系統(tǒng)還包括關(guān)聯(lián)與所述Websocket服務(wù)器的緩存模塊,緩存模塊基于文件散列編碼、用于保存、管理和讀取會(huì)話信息和文件資源。對(duì)于大批量數(shù)據(jù)的處理,webscoekt 服務(wù)器可以提供緩沖功能來(lái)減少傳輸量;對(duì)于其他數(shù)據(jù),也可以進(jìn)行緩存,避免本地信息缺失而無(wú)法尋回的情況發(fā)生,比如會(huì)話信息和文件資源等;同時(shí),由于系統(tǒng)的殊性,緩存管理需要基于文件散列編碼來(lái)管理,而不是傳統(tǒng)的文件名或者其他形式;由于系統(tǒng)是作為信息系統(tǒng)交互的中間環(huán)節(jié),系統(tǒng)處理的信息是已經(jīng)編碼過(guò)的數(shù)據(jù)流。這些數(shù)據(jù)流在存儲(chǔ)到緩存系統(tǒng)中以后,需要一種有效的識(shí)別手段來(lái)提高緩沖的效率。特別地,在特殊情況下,不同用戶提交的數(shù)據(jù)流可能是重復(fù)的,但是由于來(lái)自不同的用戶,這種重復(fù)很難通過(guò)傳統(tǒng)的文件名稱,或者其他標(biāo)示來(lái)識(shí)別。這里,我們通過(guò)對(duì)數(shù)據(jù)進(jìn)行MD5散列編碼計(jì)算的方式來(lái)判斷數(shù)據(jù)的重復(fù),以取得最大化的緩存效果;基于上訴特點(diǎn)產(chǎn)生的編碼可以作為緩存數(shù)據(jù)的存儲(chǔ)標(biāo)示,來(lái)保證緩存作用的最大化,可以極大地提高數(shù)據(jù)傳輸效率。
進(jìn)一步,所述Websocket服務(wù)器包括:
消息接收模塊,用于接收XMPP信息;
資源管理模塊,用于對(duì)轉(zhuǎn)發(fā)的XMPP信息進(jìn)行壓縮處理、轉(zhuǎn)碼處理和加密處理中的至少一種處理;
消息分發(fā)模塊,用于根據(jù)接收到的XMPP信息和關(guān)聯(lián)的通訊群的不同,進(jìn)行XMPP信息的轉(zhuǎn)發(fā);
事件驅(qū)動(dòng)并發(fā)處理模塊,用于根據(jù)事件驅(qū)動(dòng)并發(fā)處理機(jī)制來(lái)保證系統(tǒng)的可拓展性。消息的接收、管理和分發(fā)協(xié)調(diào)合作,盡可能的發(fā)揮Websocket技術(shù)支持大并發(fā)量的優(yōu)點(diǎn),從而達(dá)到同樣硬件條件下支持更多并發(fā)終端的目標(biāo)由于消息系統(tǒng)的客戶端可以基于各種平臺(tái),由此就帶來(lái)極大的信息兼容和轉(zhuǎn)換的要求;本服務(wù)的結(jié)構(gòu)保證了,在消息傳輸?shù)闹虚g環(huán)節(jié),系統(tǒng)可以根據(jù)不同的系統(tǒng)要求來(lái)進(jìn)行數(shù)據(jù)轉(zhuǎn)換,以保證不同系統(tǒng)見(jiàn)的兼容問(wèn)題;同時(shí),利用前述緩存系統(tǒng)來(lái)存儲(chǔ)已經(jīng)轉(zhuǎn)換過(guò)的數(shù)據(jù),來(lái)保證這種轉(zhuǎn)換不會(huì)給服務(wù)器帶來(lái)極大的處理壓力;同樣的,根據(jù)具體數(shù)據(jù)的要求,和客戶端的要求,服務(wù)器可以提供相應(yīng)的數(shù)據(jù)加密處理服務(wù);再者,用戶的數(shù)據(jù)在緩存后可以通過(guò)添加服務(wù)器模塊來(lái)根據(jù)需要進(jìn)行處理,并提供給客戶段各種接口來(lái)使用這些數(shù)據(jù),而不是局限于原始的數(shù)據(jù);比如用戶傳輸?shù)膱D片可以根據(jù)客戶的需求改變格式,大小,進(jìn)行各種繪制處理后再發(fā)送給客戶端來(lái)滿足不同的客戶端需求。
特別地,服務(wù)器提供事件驅(qū)動(dòng)并發(fā)處理(Event-Driven Concurrency)機(jī)制來(lái)保證系統(tǒng)地可擴(kuò)展性;事件驅(qū)動(dòng)并發(fā)處理(Event-Driven Concurrency)機(jī)制將處理流程分割成多個(gè)步驟,每一個(gè)步驟都實(shí)現(xiàn)為一個(gè)有限狀態(tài)機(jī)(FSM)。所有的處理請(qǐng)求會(huì)作為Event進(jìn)入系統(tǒng),由Scheduler負(fù)責(zé)傳遞給相應(yīng)FSM。FSM的處理結(jié)果也以Event形式輸出給Scheduler。新的Event會(huì)再次被Scheduler進(jìn)行轉(zhuǎn)發(fā)給下一個(gè)FSM,直至處理完成。
其最大的優(yōu)點(diǎn)是隨著處理量的增加,系統(tǒng)負(fù)荷是以線形增長(zhǎng)。當(dāng)達(dá)到系統(tǒng)飽和處理能力后,系統(tǒng)的處理能力不會(huì)下降。因此通過(guò)選擇和實(shí)現(xiàn)事件驅(qū)動(dòng)并非處理框架,可以得到很高的系統(tǒng)擴(kuò)展性。
本發(fā)明的有益效果是:本發(fā)明由于在XMPP服務(wù)器和用戶端之間增加了Websocket服務(wù)器,Websocket服務(wù)器而與下游用戶的聯(lián)接是單向廣播形式,相對(duì)于雙向的即時(shí)通訊如XMPP協(xié)議,可以節(jié)省很多開(kāi)銷,而且可以更加穩(wěn)定強(qiáng)壯(Robust),從而達(dá)到同樣硬件條件下支持更多并發(fā)終端的目標(biāo);另外,該Websocket服務(wù)器在轉(zhuǎn)發(fā)時(shí),是以通訊群為單位的,這將使得相對(duì)應(yīng)的用戶端可以獲取與自己需求更為匹配的信息,而另一部分用戶端則可以減少自己獲取大量自己不需要的無(wú)用信息的可能,提高用戶體驗(yàn)。
參照后文的說(shuō)明和附圖,詳細(xì)公開(kāi)了本申請(qǐng)的特定實(shí)施方式,指明了本申請(qǐng)的原理可以被采用的方式。應(yīng)該理解,本申請(qǐng)的實(shí)施方式在范圍上并不因而受到限制。在所附權(quán)利要求的精神和條款的范圍內(nèi),本申請(qǐng)的實(shí)施方式包括許多改變、修改和等同。
針對(duì)一種實(shí)施方式描述和/或示出的特征可以以相同或類似的方式在一個(gè)或更多個(gè)其它實(shí)施方式中使用,與其它實(shí)施方式中的特征相組合,或替代其它實(shí)施方式中的特征。
應(yīng)該強(qiáng)調(diào),術(shù)語(yǔ)“包括/包含”在本文使用時(shí)指特征、整件、步驟或組件的存在,但并不排除一個(gè)或更多個(gè)其它特征、整件、步驟或組件的存在或附加。
附圖說(shuō)明
所包括的附圖用來(lái)提供對(duì)本申請(qǐng)實(shí)施例的進(jìn)一步的理解,其構(gòu)成了說(shuō)明書的一部分,用于例示本申請(qǐng)的實(shí)施方式,并與文字描述一起來(lái)闡釋本申請(qǐng)的原理。顯而易見(jiàn)地,下面描述中的附圖僅僅是本申請(qǐng)的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
在附圖中:
圖1是本發(fā)明一種即時(shí)通訊擴(kuò)展方法的流程圖;
圖2是本發(fā)明一種即時(shí)通訊擴(kuò)展系統(tǒng)的示意圖;
圖3是本發(fā)明擴(kuò)展系統(tǒng)的信息處理示意圖;
圖4是本發(fā)明拓展系統(tǒng)的系統(tǒng)框架圖。
具體實(shí)施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本申請(qǐng)中的技術(shù)方案,下面將結(jié)合本申請(qǐng)實(shí)施例中的附圖,對(duì)本申請(qǐng)實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其它實(shí)施例,都應(yīng)當(dāng)屬于本申請(qǐng)保護(hù)的范圍。
實(shí)施例一:
圖1是本發(fā)明一種即時(shí)通訊擴(kuò)展方法的流程圖,參見(jiàn)圖1,本發(fā)明公開(kāi)了一種即時(shí)通訊擴(kuò)展方法,包括步驟:
S1:用戶端與Webcocket服務(wù)器建立連接,并加入特定的通訊群;
S2:Websocket服務(wù)器和XMPP服務(wù)器建立連接;
S3:XMPP服務(wù)器發(fā)送的XMPP信息將通過(guò)Websocket服務(wù)器同步轉(zhuǎn)發(fā)給通訊群對(duì)應(yīng)的用戶端。
本發(fā)明的有益效果是:本發(fā)明由于在XMPP服務(wù)器和用戶端之間增加了Websocket服務(wù)器,Websocket服務(wù)器而與下游用戶的聯(lián)接是單向廣播形式,相對(duì)于雙向的即時(shí)通訊如XMPP協(xié)議,可以節(jié)省很多開(kāi)銷,而且可以更加穩(wěn)定強(qiáng)壯(Robust),從而達(dá)到同樣硬件條件下支持更多并發(fā)終端的目標(biāo);另外,該Websocket服務(wù)器在轉(zhuǎn)發(fā)時(shí),是以通訊群為單位的,這將使得相對(duì)應(yīng)的用戶端可以獲取與自己需求更為匹配的信息,而另一部分用戶端則可以減少自己獲取大量自己不需要的無(wú)用信息的可能,提高用戶體驗(yàn)。
WebSocket是HTML5開(kāi)始提供的一種在單個(gè)TCP 連接上進(jìn)行全雙工通訊的協(xié)議
在WebSocket API中,瀏覽器和服務(wù)器只需要做一個(gè)握手的動(dòng)作,然后,瀏覽器和服務(wù)器之間就形成了一條快速通道;兩者之間就直接可以數(shù)據(jù)互相傳送。而與Websocket服務(wù)器連接的用戶,只能是會(huì)話的接受方。如果用戶需要發(fā)起會(huì)話,用戶則需要通過(guò)其他方法直接連接X(jué)MPP服務(wù)器。
其中,Websocket服務(wù)器和XMPP服務(wù)器建立連接。這里有兩種情況。在連接已經(jīng)建立的情況下,websocket服務(wù)器會(huì)重用同一個(gè)連接。如果沒(méi)有連接存在,那么會(huì)新建一個(gè)連接。連接至少需要兩個(gè)參數(shù),username和room,連接的效果是用戶username加入到會(huì)話房間room。Websocket 通過(guò)XMPP協(xié)議和XMPP服務(wù)器建立連接,并保持連接。在空閑的情況下websocket和XMPP之間不存在連接。只有用戶執(zhí)行了相關(guān)的命令才會(huì)導(dǎo)致websocket 和XMPP 的連接。
本實(shí)施例優(yōu)選的,Websocket服務(wù)器對(duì)通過(guò)它傳遞的數(shù)據(jù)作出壓縮處理、轉(zhuǎn)碼處理和加密處理中的至少一種處理。壓縮處理可以加快信息處理速度,提高信息處理效率;轉(zhuǎn)碼處理可以使得用戶端獲取格式適合的信息,以滿足更多種類型的用戶端,提高適用范圍;加密處理提高信息的安全度;另外,最好可以是先轉(zhuǎn)碼加密,再行壓縮處理,之后再進(jìn)行轉(zhuǎn)發(fā),保證信息轉(zhuǎn)發(fā)的可靠性。
其中,模塊支持?jǐn)?shù)據(jù)壓縮:根據(jù)網(wǎng)絡(luò)速度模塊可決定對(duì)轉(zhuǎn)發(fā)的數(shù)據(jù)進(jìn)行壓縮,以減少數(shù)據(jù)通過(guò)網(wǎng)絡(luò)的時(shí)間。是否壓縮由以下公式?jīng)Q定:壓縮+解壓時(shí)間<(壓縮前傳輸時(shí)間-壓縮后傳輸時(shí)間);確定壓縮前,轉(zhuǎn)換模塊會(huì)估算每個(gè)步驟地耗時(shí)。
本實(shí)施例優(yōu)選的,轉(zhuǎn)碼處理包括音視頻格式轉(zhuǎn)換。優(yōu)于不同的用戶端的要求不同,其中音視頻格式就是其中較為關(guān)鍵的部分,在轉(zhuǎn)發(fā)前進(jìn)行格式轉(zhuǎn)換,有利于提高用戶體驗(yàn),避免接收到無(wú)法有效播放的視頻。
本實(shí)施例優(yōu)選的,Websocket服務(wù)器對(duì)通過(guò)它傳遞的數(shù)據(jù)基于文件散列編碼提供緩存服務(wù)。對(duì)于大批量數(shù)據(jù)的處理,webscoekt 服務(wù)器可以提供緩沖功能來(lái)減少傳輸量;對(duì)于其他數(shù)據(jù),也可以進(jìn)行緩存,避免本地信息缺失而無(wú)法尋回的情況發(fā)生;特別的,對(duì)于可能重復(fù)使用的歷史數(shù)據(jù),或者重復(fù)計(jì)算的數(shù)據(jù),提供緩沖功能來(lái)減少傳輸量和終端端處理器開(kāi)銷;服務(wù)器內(nèi)存會(huì)劃出一部分做緩存,當(dāng)這部分存儲(chǔ)不足以保存所有數(shù)據(jù)時(shí),使用服務(wù)器的外部存儲(chǔ),如磁盤;同時(shí),由于系統(tǒng)的殊性,緩存管理需要基于文件散列編碼來(lái)管理,而不是傳統(tǒng)的文件名或者其他形式;由于系統(tǒng)是作為信息系統(tǒng)交互的中間環(huán)節(jié),系統(tǒng)處理的信息是已經(jīng)編碼過(guò)的數(shù)據(jù)流。這些數(shù)據(jù)流在存儲(chǔ)到緩存系統(tǒng)中以后,需要一種有效的識(shí)別手段來(lái)提高緩沖的效率。特別地,在特殊情況下,不同用戶提交的數(shù)據(jù)流可能是重復(fù)的,但是由于來(lái)自不同的用戶,這種重復(fù)很難通過(guò)傳統(tǒng)的文件名稱,或者其他標(biāo)示來(lái)識(shí)別。這里,我們通過(guò)對(duì)數(shù)據(jù)進(jìn)行MD5散列編碼計(jì)算的方式來(lái)判斷數(shù)據(jù)的重復(fù),以取得最大化的緩存效果;基于上訴特點(diǎn)產(chǎn)生的編碼可以作為緩存數(shù)據(jù)的存儲(chǔ)標(biāo)示,來(lái)保證緩存作用的最大化,可以極大地提高數(shù)據(jù)傳輸效率。
本實(shí)施例優(yōu)選的,Websocket服務(wù)器是作為XMPP服務(wù)器的其中一個(gè)用戶而存在的。
本實(shí)施例優(yōu)選的,用戶端包括HTML用戶端、Javascript用戶端、Android用戶端、Java用戶端和iOS用戶端中的至少一種。Websocket與下游用戶的聯(lián)接是單向廣播形式,相對(duì)于雙向的即時(shí)通訊如XMPP協(xié)議,存在支持大并發(fā)量的優(yōu)勢(shì),但對(duì)于某些用戶來(lái)說(shuō),Websocket與下游用戶的聯(lián)接并不能滿足其通訊需求,XMPP服務(wù)器同時(shí)支持其他用戶的存在,可以根據(jù)需求不同,而作為直接用戶或者通過(guò)Websocket成為下游用戶。
本實(shí)施例優(yōu)選的,若XMPP服務(wù)器存在XMPP群,則Websocket服務(wù)器建立對(duì)應(yīng)XMPP群的通訊群。對(duì)每個(gè)XMPP的群,Webscoekt服務(wù)器會(huì)建立一個(gè)對(duì)應(yīng)的群,Websocket 提供一個(gè)XMPP消息轉(zhuǎn)發(fā)機(jī)制來(lái)保證XMPP的群消息會(huì)正確的轉(zhuǎn)發(fā)給加入了該通訊群的所有客戶端。
即,連接建立后,Websocket 服務(wù)器成為XMPP會(huì)話通訊(conference)的中轉(zhuǎn)站;具體地,對(duì)每個(gè)XMPP的會(huì)話房間,Webscoekt服務(wù)器會(huì)建立一個(gè)對(duì)應(yīng)的房間;即上述的XMPP群和通訊群;系統(tǒng)有一個(gè)消息分發(fā)模塊,保證從XMPP收到的訊息會(huì)正確的轉(zhuǎn)發(fā)到websocket的所有客戶端;
實(shí)施例二:
圖2是本發(fā)明一種即時(shí)通訊擴(kuò)展系統(tǒng)的示意圖,該系統(tǒng)使用了本發(fā)明公開(kāi)的方法,圖3是本發(fā)明擴(kuò)展系統(tǒng)的信息處理示意圖;圖4是本發(fā)明拓展系統(tǒng)的系統(tǒng)框架圖。參考圖2、3和4,該系統(tǒng)包括:
XMPP服務(wù)器10,用于向外發(fā)送XMPP信息;
Websocket服務(wù)器20,用于與XMPP服務(wù)器10建立連接,并接收XMPP信息;同時(shí),與用戶端建立連接,并在將用戶端加入特定的通訊群后,并將XMPP信息轉(zhuǎn)發(fā)給用戶端;
用戶端30,用于接收Websocket服務(wù)器20轉(zhuǎn)發(fā)的XMPP信息。
本發(fā)明的有益效果是:本發(fā)明由于在XMPP服務(wù)器和用戶端之間增加了Websocket服務(wù)器,Websocket服務(wù)器而與下游用戶的聯(lián)接是單向廣播形式,相對(duì)于雙向的即時(shí)通訊如XMPP協(xié)議,可以節(jié)省很多開(kāi)銷,而且可以更加穩(wěn)定強(qiáng)壯(Robust),從而達(dá)到同樣硬件條件下支持更多并發(fā)終端的目標(biāo);另外,該Websocket服務(wù)器在轉(zhuǎn)發(fā)時(shí),是以通訊群為單位的,這將使得相對(duì)應(yīng)的用戶端可以獲取與自己需求更為匹配的信息,而另一部分用戶端則可以減少自己獲取大量自己不需要的無(wú)用信息的可能,提高用戶體驗(yàn)。
其中,Websockt服務(wù)器負(fù)責(zé)根據(jù)需要提供加密的,可靠的連接方式,和用戶認(rèn)證機(jī)制;同時(shí)服務(wù)器還提供高效的通訊群機(jī)制來(lái)保證消息轉(zhuǎn)發(fā)的一致性。
本實(shí)施例優(yōu)選的,即時(shí)通訊擴(kuò)展系統(tǒng)還包括關(guān)聯(lián)與Websocket服務(wù)器的緩存模塊(圖中未示出),緩存模塊基于文件散列編碼、用于保存、管理和讀取會(huì)話信息和文件資源。對(duì)于大批量數(shù)據(jù)的處理,webscoekt 服務(wù)器可以提供緩沖功能來(lái)減少傳輸量;對(duì)于其他數(shù)據(jù),也可以進(jìn)行緩存,避免本地信息缺失而無(wú)法尋回的情況發(fā)生,比如會(huì)話信息和文件資源等。
本實(shí)施例優(yōu)選的,Websocket服務(wù)器包括:
消息接收模塊(圖中未示出),用于接收XMPP信息;
資源管理模塊(圖中未示出),用于對(duì)轉(zhuǎn)發(fā)的XMPP信息進(jìn)行壓縮處理、轉(zhuǎn)碼處理和加密處理中的至少一種處理;
消息分發(fā)模塊(圖中未示出),用于根據(jù)接收到的XMPP信息和關(guān)聯(lián)的通訊群的不同,進(jìn)行XMPP信息的轉(zhuǎn)發(fā);
事件驅(qū)動(dòng)并發(fā)處理模塊,用于根據(jù)事件驅(qū)動(dòng)并發(fā)處理機(jī)制來(lái)保證系統(tǒng)的可拓展性。消息的接收、管理和分發(fā)協(xié)調(diào)合作,盡可能的發(fā)揮Websocket技術(shù)支持大并發(fā)量的優(yōu)點(diǎn),從而達(dá)到同樣硬件條件下支持更多并發(fā)終端的目標(biāo)由于消息系統(tǒng)的客戶端可以基于各種平臺(tái),由此就帶來(lái)極大的信息兼容和轉(zhuǎn)換的要求;本服務(wù)的結(jié)構(gòu)保證了,在消息傳輸?shù)闹虚g環(huán)節(jié),系統(tǒng)可以根據(jù)不同的系統(tǒng)要求來(lái)進(jìn)行數(shù)據(jù)轉(zhuǎn)換,以保證不同系統(tǒng)見(jiàn)的兼容問(wèn)題;同時(shí),利用前述緩存系統(tǒng)來(lái)存儲(chǔ)已經(jīng)轉(zhuǎn)換過(guò)的數(shù)據(jù),來(lái)保證這種轉(zhuǎn)換不會(huì)給服務(wù)器帶來(lái)極大的處理壓力;同樣的,根據(jù)具體數(shù)據(jù)的要求,和客戶端的要求,服務(wù)器可以提供相應(yīng)的數(shù)據(jù)加密處理服務(wù);再者,用戶的數(shù)據(jù)在緩存后可以通過(guò)添加服務(wù)器模塊來(lái)根據(jù)需要進(jìn)行處理,并提供給客戶段各種接口來(lái)使用這些數(shù)據(jù),而不是局限于原始的數(shù)據(jù);比如用戶傳輸?shù)膱D片可以根據(jù)客戶的需求改變格式,大小,進(jìn)行各種繪制處理后再發(fā)送給客戶端來(lái)滿足不同的客戶端需求。
特別地,服務(wù)器提供事件驅(qū)動(dòng)并發(fā)處理(Event-Driven Concurrency)機(jī)制來(lái)保證系統(tǒng)地可擴(kuò)展性;事件驅(qū)動(dòng)并發(fā)處理(Event-Driven Concurrency)機(jī)制將處理流程分割成多個(gè)步驟,每一個(gè)步驟都實(shí)現(xiàn)為一個(gè)有限狀態(tài)機(jī)(FSM)。所有的處理請(qǐng)求會(huì)作為Event進(jìn)入系統(tǒng),由Scheduler負(fù)責(zé)傳遞給相應(yīng)FSM。FSM的處理結(jié)果也以Event形式輸出給Scheduler。新的Event會(huì)再次被Scheduler進(jìn)行轉(zhuǎn)發(fā)給下一個(gè)FSM,直至處理完成。
其最大的優(yōu)點(diǎn)是隨著處理量的增加,系統(tǒng)負(fù)荷是以線形增長(zhǎng)。當(dāng)達(dá)到系統(tǒng)飽和處理能力后,系統(tǒng)的處理能力不會(huì)下降。因此通過(guò)選擇和實(shí)現(xiàn)事件驅(qū)動(dòng)并非處理框架,可以得到很高的系統(tǒng)擴(kuò)展性。
其中,圖3和圖4所示的,其中部分表述與上述名稱不是一一對(duì)應(yīng),而是從稍微區(qū)別于純方法和純模塊的角度來(lái)體現(xiàn)本發(fā)明的內(nèi)容,例如,緩存和其他信息處理子模塊對(duì)應(yīng)上述的緩存模塊,消息分發(fā)機(jī)制對(duì)應(yīng)上述的消息分發(fā)模塊,消息接收進(jìn)程則對(duì)應(yīng)消息接收模塊等等,但是其表述的實(shí)質(zhì)與上述模塊相類,不應(yīng)切割,而應(yīng)當(dāng)相互解釋和印證。
以上詳細(xì)描述了本發(fā)明的較佳具體實(shí)施例。應(yīng)當(dāng)理解,本領(lǐng)域的普通技術(shù)人員無(wú)需創(chuàng)造性勞動(dòng)就可以根據(jù)本發(fā)明的構(gòu)思作出諸多修改和變化。因此,凡本技術(shù)領(lǐng)域中技術(shù)人員依本發(fā)明的構(gòu)思在現(xiàn)有技術(shù)的基礎(chǔ)上通過(guò)邏輯分析、推理或者有限的實(shí)驗(yàn)可以得到的技術(shù)方案,皆應(yīng)在由權(quán)利要求書所確定的保護(hù)范圍內(nèi)。