一種在網(wǎng)頁上實現(xiàn)實時交互的系統(tǒng)及方法
【專利摘要】本發(fā)明涉及一種在網(wǎng)頁上實現(xiàn)實時交互的系統(tǒng)及方法,屬于通信及計算機領域的即時通訊技術,包括:客戶端檢測與適配模塊、負載均衡模塊、服務狀況監(jiān)控模塊、socket注冊與定位模塊、消息處理服務模塊和業(yè)務邏輯服務模塊.。利用本發(fā)明,可以讓用戶在網(wǎng)頁上實現(xiàn)實時互動,譬如:實時聊天、評論、通知等等,較好地增強了用戶間的實時互動,極大提升用戶體驗。
【專利說明】—種在網(wǎng)頁上實現(xiàn)實時交互的系統(tǒng)及方法
【技術領域】
[0001]本發(fā)明涉及一種在網(wǎng)頁上實現(xiàn)實時交互的系統(tǒng)及方法,屬于通信及計算機領域的即時通訊技術。
【背景技術】
[0002]計算機網(wǎng)絡通信作為一種先進的通信方式,一直在改變著人們的生活。而建立在計算機網(wǎng)絡通信基礎上的互聯(lián)網(wǎng)網(wǎng)站服務,憑借其建設成本低、用戶訪問方便等特點,現(xiàn)已成為提供信息、交流信息、使用信息的平臺。
[0003]社會性網(wǎng)絡服務,即SNS網(wǎng)站,作為一種互聯(lián)網(wǎng)網(wǎng)站服務形式,旨在幫助人們建立社會性互聯(lián)網(wǎng)應用服務,已成為日常生活中不可或缺的一部分。SNS以人為本,注重的是人與人之間的關系,它正在為幾十億互聯(lián)網(wǎng)用戶構建一個真實的網(wǎng)上社會。
[0004]互聯(lián)網(wǎng)短短幾十年的發(fā)展幾乎徹底改變了人類的生活方式。而今,傳統(tǒng)互聯(lián)網(wǎng)正從“人與機器”的交互時代邁向以SNS為代表的“人與人”的交互時代。SNS應用的爆發(fā)代表著互聯(lián)網(wǎng)的未來,像Facebook、Twitter,開心網(wǎng)、騰訊、新浪、搜狐、阿里巴巴等各大電信運營商們,都深刻地意識到這場新的互聯(lián)網(wǎng)革命的重要性。
[0005]作為SNS應用的開發(fā)者,每時每刻都在思考:如何才能開發(fā)出一個像Facebook那樣成功的SNS網(wǎng)站,究竟應該如何開發(fā)這些應用才能吸引用戶?才能讓用戶留下來?分析SNS網(wǎng)站的特點,不難發(fā)現(xiàn)讓用戶之間實時互動起來能夠極大地吸引用戶進來且使得用戶活躍起來。利用本發(fā)明,可以讓用戶在網(wǎng)頁上實現(xiàn)實時互動,譬如:實時聊天、評論、通知等等,較好地增強了互動,極大提升地用戶體驗。
[0006]基于常規(guī)Web2.0技術,使用短連接的ajax請求/響應模式,可以采用兩種方式來準實時地獲取相關的信息:(I)用戶主動發(fā)起操作請求,服務器返回數(shù)據(jù)后,采用異步加載的方式在網(wǎng)頁上顯示出來;(2)采用瀏覽器間隔時間來發(fā)起個輪詢請求,服務器返回數(shù)據(jù)后,采用異步加載的方式在網(wǎng)頁上顯示出來;上述兩種實現(xiàn)方式分別采用戶1、用戶2來說明,如I圖所示。
[0007]從I圖中,可以看到,基于常規(guī)Web2.0技術,無論是現(xiàn)有方案一還是方案二,不難發(fā)現(xiàn),都有兩個明顯的缺點:一是實時性不高,二是只能實現(xiàn)“用戶”與“服務器”之間的數(shù)據(jù)傳輸和反饋,無法讓不同的用戶之間在線實時交換數(shù)據(jù)、進行互動,制約了產(chǎn)品形態(tài)的進一步升級,也影響了用戶體驗。
【發(fā)明內(nèi)容】
[0008]本發(fā)明技術解決問題:克服現(xiàn)有技術的不足,提供一種在網(wǎng)頁上實現(xiàn)實時交互的系統(tǒng)及方法,利用本發(fā)明,可以讓用戶在網(wǎng)頁上實現(xiàn)實時互動,譬如:實時聊天、評論、通知等等,較好地增強了用戶間的實時互動,極大提升地用戶體驗。
[0009]本發(fā)明技術解決方案:一種在網(wǎng)頁上實現(xiàn)實時交互的系統(tǒng),其特征在于包括:客戶端檢測與適配模塊、負載均衡模塊、服務狀況監(jiān)控模塊、socket注冊與定位模塊、消息處理服務模塊和業(yè)務邏輯服務模塊;其中:
[0010]客戶端檢測與適配模塊:非常重要的模塊,負責進行用戶瀏覽器版本、特性、ip地址、對腳本支持程度等檢測、獲取用戶輸入、與消息處理服務模塊建立websocket連接,以及接收服務端推送數(shù)據(jù)等功能。該模塊的輸入為用戶的鍵盤、鼠標操作結果,并將輸入數(shù)據(jù)進行JSON格式編碼,輸出到消息處理服務模塊;該模塊在與消息處理服務模塊建立websocket連接之前,會與負載均衡模塊進行一次遠程調(diào)用,來獲取較為空閑的消息處理模塊服務器地址。
[0011]負載均衡模塊:實現(xiàn)各種客戶端消息的接收,根據(jù)后端各個消息服務器的繁忙程度,將消息轉(zhuǎn)發(fā)給相對空閑的某臺消息服務器;該模塊的輸入來自客戶端檢測與適配模塊,收到請求后查詢服務狀況監(jiān)控模塊的數(shù)據(jù),將查詢結果返回給客戶端檢測與適配模塊。確保用戶連接均衡分布在各消息處理服務模塊上。
[0012]服務狀況監(jiān)控模塊:實現(xiàn)對后臺消息處理服務模塊的運行情況的監(jiān)控,存儲負載數(shù)據(jù)。該模塊的數(shù)據(jù)輸入來自消息處理服務模塊,后者將自身的負載情況數(shù)據(jù)發(fā)送到服務狀況監(jiān)控模塊保存。
[0013]消息處理服務模塊:實現(xiàn)與客戶端檢測與適配模塊的websocket連接服務,并且實現(xiàn)消息的分組,然后送至相應的分組邏輯服務器;該模塊的輸入來自客戶端檢測與適配模塊,收到發(fā)來的編碼后的用戶數(shù)據(jù)后,將數(shù)據(jù)轉(zhuǎn)發(fā)給邏輯服務模塊去處理。同時,在與客戶端檢測與適配模塊建立websocket連接后,會將用戶ip等信息注冊到socket注冊與定位模塊。
[0014]邏輯服務模塊:實現(xiàn)相應的業(yè)務功能,譬如:進行關鍵字的過濾、業(yè)務數(shù)據(jù)的計算、存儲等,并將處理后的結果回傳給消息服務器,并通過負載均衡的接口返回到客戶端上。該模塊的輸入為消息處理服務模塊,收到輸入數(shù)據(jù)后,進行業(yè)務邏輯處理,并且生成要返回給用戶的推送數(shù)據(jù),查詢socket注冊與定位模塊上的用戶地址信息,把返回數(shù)據(jù)發(fā)送給消息處理服務模塊。
[0015]所述客戶端檢測與適配模塊的實現(xiàn)過程:
[0016](I)檢測瀏覽器是否支持javascript,提示用戶允許使用javascript ;
[0017](2)檢測瀏覽器是否支持HTML5,如果不支持,選用連接方案為XHR-long poll,否則方案為websocket協(xié)議;
[0018](3)訪問負載均衡模塊,獲取當前空閑的消息處理服務模塊的地址;
[0019](4)選用當前瀏覽器支持的協(xié)議(XHR-long poll或websocket),連接空閑的消息處理服務模塊,并且將用戶的id,ip地址信息等發(fā)送過去;
[0020](5 )獲取用戶輸入數(shù)據(jù),進行JSON編碼;
[0021](6)將用戶輸入數(shù)據(jù)發(fā)出到消息處理服務模塊。
[0022]所述負載均衡模塊的實現(xiàn)過程:
[0023](I)后臺首先會為不同的房間開啟不同的消息服務處理模塊;
[0024](2)當客戶端檢測與適配模塊與消息處理模塊連接之前,先發(fā)送http請求到負載均衡模塊,查詢目標房間的一個可用的消息處理模塊服務地址;
[0025](3)負載均衡模塊根據(jù)傳入的房間號,發(fā)送查詢請求到服務狀況監(jiān)控模塊,獲取負責該房間的消息處理模塊的實際地址;[0026](4)負載均衡模塊將查詢到的地址信息返回給客戶端檢測與適配模塊。
[0027]所述服務狀況監(jiān)控模塊的實現(xiàn)過程:
[0028](I)服務狀況監(jiān)控模塊在所有消息處理服務模塊啟動前就會開啟;
[0029](2)所有的消息處理服務模塊,都在配置文件中配置了服務狀況監(jiān)控模塊的地址;
[0030](3)消息處理服務模塊,每隔I分鐘,會將連接到自己的客戶端數(shù)量,上報給服務狀況監(jiān)控模塊。
[0031]所述消息處理服務模塊的實現(xiàn)過程:
[0032](I)消息處理服務模塊啟動后,首先監(jiān)聽配置文件中指定的端口信息,準備接受來自客戶端檢測與適配模塊的連接請求;
[0033](2)接著,消息處理服務模塊將自己所在的服務器地址、端口號注冊到服務狀況監(jiān)控模塊,方便負載均衡模塊去讀?。?br>
[0034](3 )每隔I分鐘,消息處理服務模塊還將把自身連接的客戶端數(shù)量,打包成j son格式的數(shù)據(jù),發(fā)送到服務狀況監(jiān)控模塊,由后者保存;
[0035](4)當收到一個客戶端檢測與適配模塊的連接請求后(該請求帶有用戶id,ip地址信息等),把連接建立后產(chǎn)生的socket對象保存到本地內(nèi)存中,方便后續(xù)對其進行反向消息推送使用;
[0036](5) socket信息保存到本地內(nèi)存后,消息處理服務模塊還將socket信息、以及用戶id信息發(fā)送到socket注冊和定位模塊,由后者進行保存。
[0037]所述socket注冊與定位模塊的實現(xiàn)過程:
[0038](I)啟動后在內(nèi)存中建立Iv子典;
[0039](2)字典的key為用戶id ;
[0040](3)字典的value為用戶瀏覽器中的客戶端檢測與適配模塊所連接到的消息處理模塊的地址;
[0041](4)接收消息處理服務模塊的注冊請求,將用戶id、對應的消息處理模塊地址寫入到字典;
[0042](5)接收業(yè)務邏輯服務模塊的查詢請求,查詢條件為用戶id,根據(jù)id查詢到字典對應項目的值返回。
[0043]所述業(yè)務邏輯服務模塊的實現(xiàn)過程:
[0044](I)對轉(zhuǎn)發(fā)過來的消息解析成字符串;
[0045](2)針對字符串里的內(nèi)容進行對應的邏輯處理,如:存儲到數(shù)據(jù)庫中;
[0046](3)對處理后的內(nèi)容做一些關鍵字過濾,打包成消息,返回給消息服務處理模塊,通過負載均衡接口回送到對應的客戶端上。
[0047]本發(fā)明的方法具體實現(xiàn)步驟為:
[0048]1、客戶端檢測與適配模塊,在用戶瀏覽器中檢測用戶設置、瀏覽器版本,完成連接方案的選?。?br>
[0049]2、客戶端檢測與適配模塊調(diào)用負載均衡模塊,獲取到空閑的消息處理服務模塊的地址;
[0050]3、客戶端檢測與適配模塊使用步驟I中決定的連接方案,連接步驟2中獲取到的消息處理服務模塊;
[0051]4、客戶端檢測與適配模塊接收用戶鍵盤輸入,把數(shù)據(jù)轉(zhuǎn)化為JSON格式,發(fā)送給消息處理服務模塊;
[0052]5、消息處理服務模塊將客戶端檢測與適配模塊的連接產(chǎn)生的socket信息、連同發(fā)送過來的用戶id信息注冊到socket注冊與定位模塊;
[0053]6、消息處理服務模塊將發(fā)送來的用戶輸入數(shù)據(jù)轉(zhuǎn)發(fā)給業(yè)務邏輯服務模塊去處理;
[0054]7、業(yè)務邏輯服務模塊接收到請求數(shù)據(jù)后,根據(jù)當前用戶的消息類型、進行邏輯處理(具體處理邏輯根據(jù)不同的業(yè)務場景而不同);
[0055]8、如果該業(yè)務處理需要向指定的用戶、或多個用戶推送消息(這些用戶稱為推送目標用戶),則業(yè)務邏輯服務模塊向socket注冊與定位模塊發(fā)送查詢請求,查詢推送目標用戶所連接到的消息處理服務模塊的地址;
[0056]9、業(yè)務邏輯服務模塊向消息處理服務模塊發(fā)送推送數(shù)據(jù)請求;
[0057]10.消息處理服務模塊在本地內(nèi)存中找到用戶id對應的socket,把推送數(shù)據(jù)發(fā)送出去;
[0058]11.客戶端檢測與適配模塊收到推送數(shù)據(jù)后,展現(xiàn)給用戶,完成整個實時消息的處理。
[0059]本發(fā)明與現(xiàn)有技術的優(yōu)點在于:
[0060](I)由于傳統(tǒng)的實時交互都需要在瀏覽器內(nèi)安裝相應的插件才能完成,比如flashplayer、ActiveX控件等,本發(fā)明采用的是瀏覽器內(nèi)部的組件來實現(xiàn)的,故減輕了用戶的安裝負擔,打開網(wǎng)頁就可以使用。
[0061](2)現(xiàn)有的web技術,只能夠?qū)崿F(xiàn)針對用戶請求,發(fā)送響應的功能。而無法實現(xiàn)由服務端主動向用戶瀏覽器推送數(shù)據(jù)的功能。具體原因是因為http請求是短連接,當一次請求、響應動作完成后,該鏈接會自動斷開,所以服務端就無法再給用戶推送數(shù)據(jù)了。
[0062](3)本發(fā)明為了解決這個問題,使用了 2個重要的技術方案,下面分別闡述如下:
[0063]a) XHR-long poll:當客戶端檢測與適配組件發(fā)現(xiàn)用戶瀏覽器版本較老,不支持HTML5技術時,會選用此方案。該方案中,客戶端檢測與適配組件會先發(fā)送一個握手http請求到消息處理服務模塊,產(chǎn)生一個sessionID,并約定一個輪詢過去時間T。接著,客戶端檢測與適配組件會向消息處理服務模塊發(fā)送I個普通的http請求,等待其響應。而消息處理服務模塊收到這個http請求后,不會立刻返回,而是將sessionID、發(fā)起時間記錄下來,并且設定一個計時器,其觸發(fā)時間為T:在計時器到期之前,如果有數(shù)據(jù)需要推送給該用戶,則取出之前存下來的請求對象,給其發(fā)送響應信息,此時這個http鏈接斷開。而瀏覽器收到該響應后,立刻重復上述動作,再次發(fā)送一個http請求到消息處理服務模塊,等待下一次的推送。
[0064]b)websocket:當客戶端檢測與適配組件發(fā)現(xiàn)用戶瀏覽器版本支持HTML5技術時,會選用此方案。此方案是各大瀏覽器廠商在最新版的瀏覽器支持的一種在瀏覽器后臺運行socket的技術。本發(fā)明對不同的瀏覽器提供的接口進行了封裝,提供一種統(tǒng)一的數(shù)據(jù)格式,實現(xiàn)了不同瀏覽器下都可以成功的建立websocket連接。
[0065](4 )由于http是無狀態(tài)、短連接的,所以采用a j ax等方式必須由客戶端來發(fā)起,一般使用客戶端的輪詢查詢的方式來完成數(shù)據(jù)的讀取,本發(fā)明采用的是頁面內(nèi)的長連接的方式,服務器與客戶端保持長連接,服務器可以主動推送數(shù)據(jù)給用戶,提交了交互的實時性。
【專利附圖】
【附圖說明】
[0066]圖1為現(xiàn)有技術示意圖;
[0067]圖2為本發(fā)明的系統(tǒng)整體架構流程圖;
[0068]圖3為圖2中消息處理服務模塊的實現(xiàn)流程圖;
[0069]圖4為圖2中負載均衡模塊的實現(xiàn)流程圖。
【具體實施方式】
[0070]如圖2所示,本發(fā)明的方法具體實現(xiàn)步驟為:
[0071]1、客戶端檢測與適配模塊,在用戶瀏覽器中檢測用戶設置、瀏覽器版本,完成連接方案的選??;
[0072]2、客戶端檢測與適配模塊通過http請求調(diào)用負載均衡模塊,嘗試獲取空閑的消息處理服務模塊的地址:
[0073]a)請求格式為:http://domainName/getFreeHostAddress ;
[0074]b)負載均衡模塊收到請求后,查詢服務狀況監(jiān)控模塊里存儲的數(shù)據(jù),字段包括:月艮務器地址、當前在線連接數(shù);
[0075]c)負載均衡模塊在內(nèi)存中對查詢到的記錄按照“當前在線連接數(shù)”從小到大排列,取出人數(shù)最少的服務器地址;
[0076]d)返回該地址;
[0077]3、客戶端檢測與適配模塊使用步驟I中決定的連接方案,連接步驟2中獲取到的消息處理服務模塊;
[0078]4、客戶端檢測與適配模塊接收用戶鍵盤輸入,把數(shù)據(jù)轉(zhuǎn)化為JSON格式,發(fā)送給消息處理服務模塊;
[0079]5、消息處理服務模塊將客戶端檢測與適配模塊的連接產(chǎn)生的socket信息、連同發(fā)送過來的用戶id信息注冊到socket注冊與定位模塊;
[0080]a)消息處理服務模塊發(fā)送注冊請求給socket注冊與定位模塊,數(shù)據(jù)格式:{userID:〈長整型 >,socketid:< 字符 >};
[0081]b)socket注冊與定位模塊以userID為key, socketid為value,寫入到本地內(nèi)存的字典中;
[0082]c)注冊成功,返回。
[0083]6、消息處理服務模塊將發(fā)送來的用戶輸入數(shù)據(jù)轉(zhuǎn)發(fā)給業(yè)務邏輯服務模塊去處理;
[0084]7、業(yè)務邏輯服務模塊接收到請求數(shù)據(jù)后,根據(jù)當前用戶的消息類型、進行邏輯處理(具體處理邏輯根據(jù)不同的業(yè)務場景而不同);
[0085]8、如果該業(yè)務處理需要向指定的用戶、或多個用戶推送消息(這些用戶稱為推送目標用戶),則業(yè)務邏輯服務模塊向socket注冊與定位模塊發(fā)送查詢請求,查詢推送目標用戶所連接到的消息處理服務模塊的地址;[0086]9、業(yè)務邏輯服務模塊向消息處理服務模塊發(fā)送推送數(shù)據(jù)請求;
[0087]10、消息處理服務模塊在本地內(nèi)存中找到用戶id對應的socket,把推送數(shù)據(jù)發(fā)送出去;
[0088]11、客戶端檢測與適配模塊收到推送數(shù)據(jù)后,展現(xiàn)給用戶,完成整個實時消息的處理。
[0089]如圖3所示,負載均衡模塊具體實現(xiàn)如下:
[0090]負載均衡模塊的主要解決:
[0091]a)在用戶量比較大的時候,一臺服務器已經(jīng)不能滿足需求,需要支持多服務器分布式部署;
[0092]b)由于webSocket連接屬于長連接,一個鏈接的不同請求具有上下文關系,所以不能簡單的使用現(xiàn)有的http反向代理模式來進行負載均衡,需要自主研發(fā)負載均衡模塊。
[0093]主要實現(xiàn)負載的策略是:
[0094]1、為不同的房間開啟不同的消息服務組件;
[0095]2、當客戶端請求連接的時候,先調(diào)用負載均衡接口,查詢目標房間的一個可用服務地址;
[0096]3、負載均衡組件內(nèi)部維護了不同服務器的負載信息,當收到調(diào)度請求的時候,查詢最空閑的服務器地址返回。
[0097]如圖4所示,消息處理服務模塊具體實現(xiàn)如下:
[0098]消息處理服務模塊主要采用webSocket服務,主要解決:
[0099]1、用于實現(xiàn)基于瀏覽器的長連接消息通信,以使得服務端與客戶端能實時通信;
[0100]2、能夠讓用戶在不安裝任何插件的情況下,實現(xiàn)與服務器端的實時消息收發(fā)、提高消息的及時性。
[0101]消息處理服務模塊的實現(xiàn)過程:
[0102]1、在客戶建立連接的消息里獲取瀏覽器的版本信息及支持的連接特性;
[0103]2、根據(jù)瀏覽器的特性加載XHR-Polling組件或websocket-client組件;
[0104]3、采用步驟2中的一種方式連接到websocket服務器,并設置對應的消息訂閱處理函數(shù);
[0105]4、接收到消息,循環(huán)進行處理。
【權利要求】
1.一種在網(wǎng)頁上實現(xiàn)實時交互的系統(tǒng),其特征在于包括:客戶端檢測與適配模塊、負載均衡模塊、服務狀況監(jiān)控模塊、socket注冊與定位模塊、消息處理服務模塊和業(yè)務邏輯服務模塊;其中: 客戶端檢測與適配模塊,負責進行用戶瀏覽器版本、特性、ip地址、對腳本支持程度檢測、獲取用戶輸入、與消息處理服務模塊建立websocket連接,以及接收服務端推送數(shù)據(jù)功能;該模塊的輸入為用戶的鍵盤、鼠標操作結果,并將輸入數(shù)據(jù)進行JSON格式編碼,輸出到消息處理服務模塊;該模塊在與消息處理服務模塊建立websocket連接之前,會與負載均衡模塊進行一次遠程調(diào)用,來獲取較為空閑的消息處理模塊服務器地址; 負載均衡模塊:實現(xiàn)各種客戶端消息的接收,根據(jù)后端各個消息服務器的繁忙程度,將消息轉(zhuǎn)發(fā)給相對空閑的某臺消息服務器;該模塊的輸入來自客戶端檢測與適配模塊,收到請求后查詢服務狀況監(jiān)控模塊的數(shù)據(jù),將查詢結果返回給客戶端檢測與適配模塊,確保用戶連接均衡分布在各消息處理服務模塊上; 服務狀況監(jiān)控模塊:實現(xiàn)對后臺消息處理服務模塊的運行情況的監(jiān)控,存儲負載數(shù)據(jù)該模塊的數(shù)據(jù)輸入來自消息處理服務模塊,后者將自身的負載情況數(shù)據(jù)發(fā)送到服務狀況監(jiān)控模塊保存; 消息處理服務模塊:實現(xiàn)與客戶端檢測與適配模塊的websocket連接服務,并且實現(xiàn)消息的分組,然后送至相應的分組邏輯服務器;該模塊的輸入來自客戶端檢測與適配模塊,收到發(fā)來的編碼后的用戶數(shù)據(jù)后,將數(shù)據(jù)轉(zhuǎn)發(fā)給邏輯服務模塊去處理;同時,在與客戶端檢測與適配模塊建立websocket連接后,會將用戶ip信息注冊到socket注冊與定位模塊; 邏輯服務模塊:實現(xiàn)相應的業(yè)務功能,包括進行關鍵字的過濾、業(yè)務數(shù)據(jù)的計算、存儲,并將處理后的結果回傳給消息服務器,并通過負載均衡的接口返回到客戶端上;該模塊的輸入為消息處理服務模塊,收到輸入數(shù)據(jù)后,進行業(yè)務邏輯處理,并且生成要返回給用戶的推送數(shù)據(jù),查詢socket注冊與`定位模塊上的用戶地址信息,把返回數(shù)據(jù)發(fā)送給消息處理服務模塊。
2.根據(jù)權利要求1所述的在網(wǎng)頁上實現(xiàn)實時交互的系統(tǒng),其特征在于:所述客戶端檢測與適配模塊的實現(xiàn)過程: Cl)檢測瀏覽器是否支持javascript,提示用戶允許使用javascript ; (2)檢測瀏覽器是否支持HTML5,如果不支持,選用連接方案為XHR-longpoll,否則方案為websocket協(xié)議; (3)訪問負載均衡模塊,獲取當前空閑的消息處理服務模塊的地址; (4)選用當前瀏覽器支持的協(xié)議包括XHR-longpoll或websocket,連接空閑的消息處理服務模塊,并且將用戶的id,ip地址信息等發(fā)送過去; (5 )獲取用戶輸入數(shù)據(jù),進行JSON編碼; (6)將用戶輸入數(shù)據(jù)發(fā)出到消息處理服務模塊。
3.根據(jù)權利要求1所述的在網(wǎng)頁上實現(xiàn)實時交互的系統(tǒng),其特征在于:所述負載均衡模塊的實現(xiàn)過程: (1)后臺首先會為不同的房間開啟不同的消息服務處理模塊; (2)當客戶端檢測與適配模塊與消息處理模塊連接之前,先發(fā)送http請求到負載均衡模塊,查詢目標房間的一個可用的消息處理模塊服務地址;(3)負載均衡模塊根據(jù)傳入的房間號,發(fā)送查詢請求到服務狀況監(jiān)控模塊,獲取負責該房間的消息處理模塊的實際地址; (4)負載均衡模塊將查詢到的地址信息返回給客戶端檢測與適配模塊。
4.根據(jù)權利要求1所述的在網(wǎng)頁上實現(xiàn)實時交互的系統(tǒng),其特征在于:所述服務狀況監(jiān)控模塊的實現(xiàn)過程: (1)服務狀況監(jiān)控模塊在所有消息處理服務模塊啟動前就會開啟; (2)所有的消息處理服務模塊,都在配置文件中配置了服務狀況監(jiān)控模塊的地址; (3)消息處理服務模塊,每隔I分鐘,會將連接到自己的客戶端數(shù)量,上報給服務狀況監(jiān)控模塊。
5.根據(jù)權利要求1所述的在網(wǎng)頁上實現(xiàn)實時交互的系統(tǒng),其特征在于:所述消息處理服務模塊的實現(xiàn)過程: (1)消息處理服務模塊啟動后,首先監(jiān)聽配置文件中指定的端口信息,準備接受來自客戶端檢測與適配模塊的連接請求; (2)接著,消息處理服務模塊將自己所在的服務器地址、端口號注冊到服務狀況監(jiān)控模塊,方便負載均衡模塊去讀取。 (3 )每隔I分鐘,消息處理服務模塊還將把自身連接的客戶端數(shù)量,打包成j son格式的數(shù)據(jù),發(fā)送到服務狀況監(jiān)控模塊,由后者保存。 (4)當收到一個客戶端檢測與適配模塊的帶有用戶id,ip地址信息連接請求后,該請求,把連接建立后產(chǎn)生的socket對象保存到本地內(nèi)存中,方便后續(xù)對其進行反向消息推送使用; (5)socket信息保存到本地內(nèi)存后,消息處理服務模塊還將socket信息、以及用戶id信息發(fā)送到socket注冊和定位模塊,由后者進行保存。
6.根據(jù)權利要求1所述的在網(wǎng)頁上實現(xiàn)實時交互的系統(tǒng),其特征在于:所述socket注冊與定位模塊的實現(xiàn)過程: (1)啟動后在內(nèi)存中建立一個字典; (2)字典的key為用戶id; (3)字典的value為用戶瀏覽器中的客戶端檢測與適配模塊所連接到的消息處理模塊的地址; (4)接收消息處理服務模塊的注冊請求,將用戶id、對應的消息處理模塊地址寫入到字血.ZN ? (5)接收業(yè)務邏輯服務模塊的查詢請求,查詢條件為用戶id,根據(jù)id查詢到字典對應項目的值返回。
7.根據(jù)權利要求1所述的在網(wǎng)頁上實現(xiàn)實時交互的系統(tǒng),其特征在于:所述業(yè)務邏輯服務模塊的實現(xiàn)過程 (1)對轉(zhuǎn)發(fā)過來的消息解析成字符串; (2)針對字符串里的內(nèi)容進行對應的邏輯處理,包括存儲到數(shù)據(jù)庫中; (3)對處理后的內(nèi)容做一些關鍵字過濾,打包成消息,返回給消息服務處理模塊,通過負載均衡接口回送到對應的客戶端上。
8.—種在網(wǎng)頁上實現(xiàn)實時交互的方法,其特征在于實現(xiàn)步驟為:(1)客戶端檢測與適配模塊,在用戶瀏覽器中檢測用戶設置、瀏覽器版本,完成連接方案的選?。? (2)客戶端檢測與適配模塊調(diào)用負載均衡模塊,獲取到空閑的消息處理服務模塊的地址; (3)客戶端檢測與適配模塊使用步驟I中決定的連接方案,連接步驟2中獲取到的消息處理服務模塊; (4)客戶端檢測與適配模塊接收用戶鍵盤輸入,把數(shù)據(jù)轉(zhuǎn)化為JSON格式,發(fā)送給消息處理服務模塊; (5)消息處理服務模塊將客戶端檢測與適配模塊的連接產(chǎn)生的socket信息、連同發(fā)送過來的用戶id信息注冊到socket注冊與定位模塊; (6)消息處理服務模塊將發(fā)送來的用戶輸入數(shù)據(jù)轉(zhuǎn)發(fā)給業(yè)務邏輯服務模塊去處理; (7)業(yè)務邏輯服務模塊接收到請求數(shù)據(jù)后,根據(jù)當前用戶的消息類型、進行邏輯處理; (8)如果該業(yè)務處理需要向指定的用戶、或多個用戶推送消息,則業(yè)務邏輯服務模塊向socket注冊與定位模塊發(fā) 送查詢請求,查詢推送目標用戶所連接到的消息處理服務模塊的地址; (9)業(yè)務邏輯服務模塊向消息處理服務模塊發(fā)送推送數(shù)據(jù)請求; (10)消息處理服務模塊在本地內(nèi)存中找到用戶id對應的socket,把推送數(shù)據(jù)發(fā)送出去; (11)客戶端檢測與適配模塊收到推送數(shù)據(jù)后,展現(xiàn)給用戶,完成整個實時消息的處理。
【文檔編號】H04L12/58GK103634382SQ201310590327
【公開日】2014年3月12日 申請日期:2013年11月20日 優(yōu)先權日:2013年11月20日
【發(fā)明者】崔凱, 操燦 申請人:安徽科大訊飛信息科技股份有限公司