專利名稱:聊天服務器系統、構建聊天服務器系統的方法以及聊天系統的制作方法
技術領域:
本發明涉及網絡聊天技術,特別是涉及一種聊天服務器系統、構建聊天服務器系 統的方法以及聊天系統。
背景技術:
網絡聊天室是在網絡上由兩個或兩個以上的用戶組成的會話室,以供用戶間通過 文字與符號進行實時交談、聊天的場所。一種提供網絡聊天室功能的聊天系統包括客戶端 和ffi服務器,用戶通過客戶端的瀏覽器發送http (HyperText Transfer Protocol,超義本 傳輸協議)請求,獲取聊天室頁面進行聊天;WEB服務器為客戶端提供聊天服務以及進行聊天室的管理。
通常,客戶端使用AJAX(Asynchronous JavaScript and XML,異步 Javakript 和 XML)結合 PHP (Hypertext Preprocesor,超級文本預處理語言)/JSP (Java Server Pages, ava服務器頁面)等頁面技術,具體工作方式為客戶端的瀏覽器頁面通過發送 xmlHttpRequest請求,通過http協議與TOB服務器交互,TOB服務器響應請求,返回xml數 據對象,客戶端在瀏覽器下解析對象顯示。
由于AJAX是一種局部刷新頁面的技術,其可以減少頁面刷新的次數,但其本質還 是基于http協議的請求-響應操作,也就是說,AJAX需要通過定時訪問WEB服務器來取得 最新的數據,比如說間隔500毫秒對WEB服務器發起一次請求,不管此時TOB服務器端有沒 有新的數據,均要對客戶端請求進行響應,這樣必然會加重WEB服務器的負擔,而當WEB服 務器有數據更新的時候,其卻無法主動向客戶端發送,只有在收到客戶端的請求時才能向 客戶端發送,這樣的請求-響應模式難以實現客戶端高并發(即多個客戶端同時向服務器 發送請求)、服務器端高訪問(即服務器端同時收到多個客戶端的訪問)情況下的實時響 應;另外,AJAX導致客戶端必須等到刷新數據的時候,才能從WEB服務器取到數據,沒到刷 新的時候,客戶端無法獲悉WEB服務器中已更新的數據,因此,也無法保證消息實時性。
而且,將聊天室的應用服務(包括為客戶端提供聊天服務,以及對聊天室管理)均 部署WEB服務器上,由其獨立完成請求響應,而未根據業務需求的不同特點搭建分布式服 務,造成服務器端穩定性不可靠。
此外,就客戶終端而言,還存在以下缺陷
AJAX需要由Javakript語言解析xml格式數據,而不同的瀏覽器對xml解析方式 的支持不一致,這樣,易出現不同客戶終端間的兼容性問題,例如,對于同樣的xml數據,不 同客戶終端間顯示出不同的結果,甚至導致ml數據在某些瀏覽器下無法解析,從而影響 用戶的使用。發明內容
有鑒于此,本發明提出一種聊天服務器系統、構建聊天服務器系統的方法以及聊天系統,所要解決的技術問題為聊天客戶終端高并發的情況下,能夠獲得聊天服務器系統 的實時響應。
本發明的目的及解決其技術問題是采用以下技術方案來實現的。依據本發明提出 的一種聊天服務器系統,包括=SOCKET服務器,與多個聊天客戶終端建立SOCKET連接,并與 所述多個聊天客戶終端保持連接以向其提供聊天服務;聊天室管理服務器,用于控制管理 所述SOCKET服務器和聊天客戶終端。
本發明的目的及解決其技術問題還可采用以下技術措施進一步實現。
前述的聊天服務器系統,所述SOCKET服務器為MINA服務器。
前述的聊天服務器系統,所述MINA服務器為多個,該聊天服務器系統還包括交 換機,連接在所述多個聊天客戶終端與所述多個MINA服務器之間;主JMS服務器,與所述多 個MINA服務器連接;其中,當所述MINA服務器通過所述交換機從其連接的聊天客戶終端 接收的消息為私聊消息時,所述MINA服務器判斷該私聊消息的接收方是否為自身連接的 聊天客戶終端,若是,則將該私聊消息通過所述交換機發送至接收方;若否,則通過所述主 JMS服務器將該私聊消息發送至接收方所屬的MINA服務器,并由該接收方所屬的MINA服務 器通過所述交換機將該私聊消息發送至接收方。
前述的聊天服務器系統,還包括緩存服務器,用于存儲每個MINA服務器所連接 的聊天客戶終端信息;所述MINA服務器通過該緩存服務器判斷所述私聊消息的接收方是 否為自身連接的聊天客戶終端。
前述的聊天服務器系統,所述MINA服務器包括信息存儲單元,用于存儲與該 MINA服務器連接的聊天客戶終端信息;所述MINA服務器通過該信息存儲單元獲取其連接 的聊天客戶終端信息,以將私聊消息發送至接收方。
前述的聊天服務器系統,當所述MINA服務器從其連接的聊天客戶終端接收的消 息為廣播消息時,所述MINA服務器將該廣播消息發送至所述主JMS服務器,并由所述主JMS 服務器將所述廣播消息向MINA服務器廣播,然后由MINA服務器向其所連接的聊天客戶終端廣播。
前述的聊天服務器系統,所述MINA服務器還用于對聊天客戶終端的請求進行鑒 權。
前述的聊天服務器系統,所述主JMS服務器還用于將來自所述聊天室管理服務器 的控制命令發送至所述MINA服務器。
前述的聊天服務器系統,該聊天服務器系統還包括備份JMS服務器,用于存儲所 述主JMS服務器未處理的消息,并在所述主JMS服務器出現故障時,處理未處理的消息。
本發明的目的及解決其技術問題另外還采用以下技術方案來實現。依據本發明提 出的一種構建聊天服務器系統的方法,包括以下步驟
提供SOCKET服務器,使其與多個聊天客戶終端建立SOCKET連接,并與所述多個 聊天客戶終端保持連接以向其提供聊天服務;提供聊天室管理服務器,以控制管理所述 SOCKET服務器和聊天客戶終端。
本發明的目的及解決其技術問題另外還采用以下技術方案來實現。依據本發明提 出的一種聊天系統,其特征在于,包括前述的聊天服務器系統以及聊天客戶終端。
由上述技術方案可知,本發明具有以下有益效果在聊天客戶終端高并發的情況下,能夠獲得聊天服務器系統的實時響應。
通過以下參照附圖對優選實施例的說明,本發明的上述以及其它目的、特征和優 點將更加明顯。
圖1為本發明一實施例提供的聊天服務器系統的框圖2為本發明另一實施例提供的聊天服務器系統的框圖3為本發明一實施例的連接于同一 MINA服務器的兩個聊天客戶終端間私聊的 流程圖4為本發明一實施例的連接于不同MINA服務器的兩個聊天客戶終端間私聊的 流程圖5為本發明一實施例的聊天客戶終端發布廣播消息的流程圖。
具體實施方式
下面將詳細描述本發明的具體實施例。應當注意,這里描述的實施例只用于舉例 說明,并不用于限制本發明。
請參閱圖1所示,其為本發明一實施例提供的聊天服務器系統的框圖,該實施例 的聊天服務器系統1包括=SOCKET服務器11和聊天室管理服務器12。其中,SOCKET服務 器11與多個聊天客戶終端13建立SOCKET連接,并與多個聊天客戶終端13保持連接以向 其提供聊天服務,本領域技術人員知道基于TCP/IP協議的SOCKET (套接字)連接是比 http協議更底層的通信標準,數據通過SOCKET字節流傳輸,具有更高的傳輸速率;而且,通 過SOCKET可以建立SOCKET服務器11與聊天客戶終端13的長連接,在長連接中,SOCKET服 務器11與聊天客戶終端13間連接建立后一直處于連接狀態。
這樣,在本實施例中,SOCKET服務器11與聊天客戶終端13之間的連接一旦建立, SOCKET服務器11和聊天客戶終端13都可以隨時向對方發送數據,例如,當SOCKET服務器 11發現某一聊天客戶終端為新數據接收方的時候,便會主動向該聊天客戶終端發送,而非 像http協議那樣須等到該聊天客戶終端的請求時,才能將新的數據向其發送,網絡延遲的 減小是顯而易見的,具有更高的實時性;而且,對于聊天客戶終端而言,也并非向SOCKET服 務器發出請求才能接收數據,從而減輕SOCKET服務器的負擔;此外,基于http協議的通信, 每條信息的發送都會包含很多冗余信息,進行符合http協議的包裝,而SOCKET通信不會有 這些冗余信息,發送同樣數量的字符需要傳送的數據量更少,這樣就節省了網絡帶寬,用戶 感覺到的是數據的發送和接收更加迅速。因此,即使聊天客戶終端高并發、聊天服務器系統 高訪問的情況下,也能夠獲得SOCKET服務器的實時響應。
聊天室管理服務器12用于控制管理SOCKET服務器12和聊天客戶終端13,其可 提供除SOCKET服務器11所提供的聊天服務外的其他所有對聊天室的管理及配置功能,例 如,維護聊天室信息,公告信息的設置;維護敏感關鍵詞庫信息;以及聊天室初始化參數維 護等。
舉例而言,聊天室管理服務器12維護的一些聊天室的信息包括諸如聊天室的房 間列表、一個房間的人數等等。聊1客戶終端13通過請求聊天室管理服務器12來獲取這些信息,并且聊天客戶終端13從聊天室管理服務器12獲得一次上述信息后,就一直可以展 示在客戶終端界面,因此,在一實施例中,聊天室管理服務器12與聊天客戶終端13之間為 http連接。
在如圖1所示的實施例中,將聊天服務和聊天室的管理分別由SOCKET服務器11 和聊天室管理服務器12來實現,使得管理服務獨立于聊天服務,這樣不同的功能服務,合 理分配在不同的服務器上,實現了管理與使用的分布式部署,從而提高聊天服務器系統的 穩定性。
在一實施例中,SOCKET服務器為基于 MINA(Multipurpose Infrastructurefor Network Applications,網絡應用程序的通用基礎框架)構造的MINA服務器,本領域技術 人員知道,MINA為現有技術中的一種網絡應用程序框架,本實施例中使用其構建MINA服務 器,可具有更高的穩定性以保持與聊天客戶終端的長連接。
請參閱圖2所示,其為本發明另一實施例提供的聊天服務器系統的框圖,本實施 例的聊天服務器系統2中,包括多個MINA服務器21以構成MINA服務器集群,聊天服務器 系統2還包括交換機22和主JMS服務器23,其中,交換機22連接在多個聊天客戶終端13 與多個MINA服務器21之間,以實現負載均衡;主JMS (Java Message Service, Java消息 服務)服務器23與多個MINA服務器21連接,當某一 MINA服務器通過交換機22從其連接 的聊天客戶終端接收的消息為私聊消息(即只有作為接收方的聊天客戶終端能接收到的 消息)時,該MINA服務器判斷該私聊消息的接收方是否為自身連接的聊天客戶終端,若是, 則將該私聊消息通過交換機22發送至相應的作為接收方的聊天客戶終端;若否,則通過主 JMS服務器23將該私聊消息發送至接收方所屬的MINA服務器,并由該接收方所屬的MINA 服務器通過交換機22將該私聊消息發送至相應的作為接收方的聊天客戶終端,這樣,由主 JMS服務器23實現了屬于不同MINA服務器的聊天客戶終端間的消息同步。
在一實施例中,該聊天服務器系統還包括緩存服務器M,用于存儲每個MINA服 務器所連接的聊天客戶終端信息;MINA服務器可通過該緩存單元M判斷上述私聊消息的 接收方是否為自身連接的聊天客戶終端,在本實施例中,將聊天客戶終端信息保存在緩存 服務器M中,則不需要使用數據庫,因為用戶通過聊天客戶終端13登錄了聊天室,就會有 自己的信息,一旦退出,這個信息就不再需要,下次再登錄,就是新的信息,這些信息是暫時 的,所以,不需要數據庫來保存,而使用緩存服務器M來保存。緩存服務器M還可保存MINA 服務器集群的其他共享信息,例如,每個聊天室房間的用戶基本信息(如用戶ID、用戶昵 稱、所屬房間號等)。聊天室管理服務器12也可從該緩存服務器M中獲取所需信息。聊天 客戶終端信息例如為當前用戶的會話狀態,客戶終端IP、用戶ID,用戶所屬聊天室ID等。
優選地,緩存服務器M由高性能的分布式內存對象緩存系統Memcached來實現, 本實施例中,將高性能系統Memcached用作內存服務,具有高效和運行穩定的優點。
MINA服務器21可包括信息存儲單元,用于存儲與該MINA服務器連接的聊天客 戶終端信息;MINA服務器可通過該信息存儲單元獲取其連接的聊天客戶終端信息,以將私 聊信息發送至相應的聊天客戶終端。具體地,信息存儲單元可為在MINA服務器21中開辟 的一塊內存,以存儲其連接的聊天客戶終端的聊天客戶終端信息,聊天客戶終端信息例如 包括保存了當前用戶會話狀態的用戶會話信息,會話狀態包含用戶的IP等一些信息,可以 通過會話信息找到所屬的客戶終端。7
在另外的一些實施例中,MINA服務器還用于對聊天客戶終端的請求進行鑒權(例 如判斷是否為黑名單用戶,是否禁止其發言等),以決定是否對其進行后續處理;所述主 JMS服務器還用于將來自所述聊天室管理服務器的控制命令發送至所述MINA服務器,其中 控制命令例如為踢人、禁言或關閉等。
在圖2所示的實施例中,通過交換機連接MINA服務器集群,能夠根據聊天服務需 要增加或減少MINA服務器的數量,這樣,在無需重新設計該聊天服務器系統架構的情況 下,便可根據實際情況對聊天服務器系統進行橫向擴展,從而提高了結構的可擴展性。
聊天服務器系統還可包括備份JMS服務器25,用于存儲所述主JMS服務器未處 理的消息,并在所述主JMS服務器出現故障時,處理未處理的消息,實現聊天服務器系統的 熱備份,并提高結構的穩定性。
請參閱圖3所示,其為本發明一實施例的連接于同一MINA服務器的兩個聊天客戶 終端間私聊的流程圖,在本實施例中,作為發送方的聊天客戶終端A連接于MINA服務器A, 作為接收方的聊天客戶終端B也連接于MINA服務器A,聊天客戶終端A欲發送私聊消息至 聊天客戶終端B,執行步驟如下
Sll 聊天客戶終端A發送私聊消息至MINA服務器A,該私聊消息中包含接收方的 ID ;
S12 =MINA服務器A根據接收方的ID從緩存服務器中獲取接收方所屬的MINA服 務器;
S13 緩存服務器將接收方所屬的MINA服務器返回給MINA服務器A (在本實施例 中,接收方所屬的MINA服務器也為MINA服務器A);
S14 :MINA服務器A向聊天客戶終端A返回發送結果(成功或失敗);
S15 :MINA服務器A根據接收方的ID從其內部的信息存儲單元獲取接收方信息, 例如IP信息;
S16 信息存儲單元將接收方信息返回給MINA服務器A,MINA服務器A由此獲知接 收方為聊天客戶終端B;
S17 =MINA服務器A將私聊信息發送給聊天客戶終端B。
請參閱圖4所示,其為本發明一實施例的連接于不同MINA服務器的兩個聊天客戶 終端間私聊的流程圖,在本實施例中,作為發送方的聊天客戶終端A連接于MINA服務器A, 作為接收方的聊天客戶終端B連接于MINA服務器B,聊天客戶終端A欲發送私聊消息至聊 天客戶終端B,執行步驟如下
S21 聊天客戶終端A發送私聊消息至MINA服務器A,該私聊消息中包含接收方的 ID ;
S22 =MINA服務器A根據接收方的ID從緩存服務器中獲取接收方所屬的MINA服 務器;
S23 緩存服務器將接收方所屬的MINA服務器返回給MINA服務器A (在本實施例 中,接收方所屬的MINA服務器為MINA服務器B);
S24 =MINA服務器A發送私聊消息到主JMS服務器;
在本實施例中,每個MINA服務器在JMS服務器上分別對應一個JMS技術中的 QUEUE (隊列),以實現消息的順序處理,例如,MINA服務器A發送私聊消息到接收方所屬MINA服務器(即MINA服務器B)對應的QUEUE。
S25 :MINA服務器A向聊天客戶終端A返回發送結果(成功或失敗);
S26 JMS服務器傳遞私聊消息到接收方所屬MINA服務器(即MINA服務器B);
S27 =MINA服務器B根據接收方的ID從其內部的信息存儲單元獲取接收方信息, 例如IP信息
S28 信息存儲單元將接收方信息返回給MINA服務器B,MINA服務器B由此獲知接 收方為聊天客戶終端B;
S29 =MINA服務器B將私聊信息發送給聊天客戶終端B。
在本發明的再一實施例中,當所述MINA服務器從其連接的聊天客戶終端接收的 消息為廣播消息時,所述MINA服務器將該廣播消息發送至JMS服務器,并由JMS服務器將 所述廣播消息向MINA服務器廣播,然后由MINA服務器向其所連接的聊天客戶終端廣播。
其中,廣播消息可為某一聊天客戶終端向所有聊天客戶終端發送的消息,也可為 某一聊天客戶終端向其所屬的聊天室房間內的所有用戶發送消息,即群聊。
請參閱圖5所示,其為本發明一實施例的聊天客戶終端發布廣播消息的流程圖, 在本實施例中執行步驟如下
S31 聊天客戶終端發送廣播消息至MINA服務器;
S32 =MINA服務器向聊天客戶終端返回發送結果(成功或失敗);
S33 =MINA服務器A同步廣播消息到JMS服務器;
在本實施例中,通過JMS服務器發布廣播消息由JMS技術中的TOPIC(主題)對象 實現。
S34 JMS服務器讀取TOPIC,下發廣播消息至所有MINA服務器;
S35 :MINA服務器從其自身的信息存儲單元獲取各聊天客戶終端信息,例如IP信 息;
S36:各MINA服務器根據客戶終端信息,將廣播消息發布至客戶終端,具體而言, 如果該廣播消息是發送到所有聊天客戶終端的,則MINA服務器將該廣播消息發布至所有 客戶終端;如果該廣播消息是發送到某一聊天室房間的,則MINA服務器會將該廣播消息發 送給屬于該聊天室房間的所有客戶終端。
本發明的實施例還提供了一種構建聊天服務器系統的方法,包括以下步驟提供 SOCKET服務器,使其與多個聊天客戶終端建立SOCKET連接,并與所述多個聊天客戶終端保 持連接以向其提供聊天服務;提供聊天室管理服務器,以控制管理所述SOCKET服務器和聊 天客戶終端。
這種構建聊天服務器系統的方法,可以實現在聊天客戶終端高并發、高訪問的情 況下,依然能獲得SOCKET服務器的實時響應;而且這種將不同的功能服務,合理分配在不 同的服務器上,實現了管理與使用的分布部署,能夠提高聊天服務器系統的穩定性。
進一步地,本發明的實施例還提供了一種聊天系統,其包括如前所述的聊天服務 器系統以及聊天客戶終端。
可以看出,本實施例提供的聊天系統,可以實現在聊天客戶終端高并發、高訪問的 情況下,依然能獲得SOCKET服務器的實時響應;而且這種聊天服務器系統將不同的功能服 務,合理分配在不同的服務器上,實現了管理與使用的分布部署,能夠提高聊天服務器系統的穩定性。
雖然已參照幾個典型實施例描述了本發明,但應當理解,所用的術語是說明和示 例性、而非限制性的術語。由于本發明能夠以多種形式具體實施而不脫離發明的精神或實 質,所以應當理解,上述實施例不限于任何前述的細節,而應在隨附權利要求所限定的精神 和范圍內廣泛地解釋,因此落入權利要求或其等效范圍內的全部變化和改型都應為隨附權 利要求所涵蓋。
權利要求
1.一種聊天服務器系統,其特征在于,包括SOCKET服務器,與多個聊天客戶終端建立SOCKET連接,并與所述多個聊天客戶終端保 持連接以向其提供聊天服務;聊天室管理服務器,用于控制管理所述SOCKET服務器和聊天客戶終端。
2.根據權利要求1所述的聊天服務器系統,其特征在于,所述SOCKET服務器為MINA服 務器。
3.根據權利要求2所述的聊天服務器系統,其特征在于,所述MINA服務器為多個,該聊 天服務器系統還包括;交換機,連接在所述多個聊天客戶終端與所述多個MINA服務器之間;主JMS服務器,與所述多個MINA服務器連接;其中,當所述MINA服務器通過所述交換機從其連接的聊天客戶終端接收的消息為私 聊消息時,所述MINA服務器判斷該私聊消息的接收方是否為自身連接的聊天客戶終端,若 是,則將該私聊消息通過所述交換機發送至接收方;若否,則通過所述主JMS服務器將該私 聊消息發送至接收方所屬的MINA服務器,并由該接收方所屬的MINA服務器通過所述交換 機將該私聊消息發送至接收方。
4.根據權利要求3所述的聊天服務器系統,其特征在于,還包括緩存服務器,用于存儲每個MINA服務器所連接的聊天客戶終端信息;所述MINA服務器通過該緩存服務器判斷所述私聊消息的接收方是否為自身連接的聊 天客戶終端。
5.根據權利要求3所述的聊天服務器系統,其特征在于,所述MINA服務器包括信息存儲單元,用于存儲與該MINA服務器連接的聊天客戶終端信息;所述MINA服務器通過該信息存儲單元獲取其連接的聊天客戶終端信息,以將私聊消 息發送至接收方。
6.根據權利要求3所述的聊天服務器系統,其特征在于,當所述MINA服務器從其連接 的聊天客戶終端接收的消息為廣播消息時,所述MINA服務器將該廣播消息發送至所述主 JMS服務器,并由所述主JMS服務器將所述廣播消息向MINA服務器廣播,然后由MINA服務 器向其所連接的聊天客戶終端廣播。
7.根據權利要求3所述的聊天服務器系統,其特征在于,所述MINA服務器還用于對聊 天客戶終端的請求進行鑒權。
8.根據權利要求3所述的聊天服務器系統,其特征在于,所述主JMS服務器還用于將來 自所述聊天室管理服務器的控制命令發送至所述MINA服務器。
9.根據權利要求3所述的聊天服務器系統,其特征在于,該聊天服務器系統還包括備份JMS服務器,用于存儲所述主JMS服務器未處理的消息,并在所述主JMS服務器出現故障時,處理未處理的消息。
10.一種構建聊天服務器系統的方法,其特征在于,包括以下步驟提供SOCKET服務器,使其與多個聊天客戶終端建立SOCKET連接,并與所述多個聊天客 戶終端保持連接以向其提供聊天服務;提供聊天室管理服務器,以控制管理所述SOCKET服務器和聊天客戶終端。
11.一種聊天系統,其特征在于,包括根據權利要求1-9中任一項所述的聊天服務器系統以及聊天客戶終端。
全文摘要
本發明公開了一種聊天服務器系統、構建聊天服務器系統的方法以及聊天系統,其中該聊天服務器系統,包括SOCKET 服務器,與多個聊天客戶終端建立SOCKET連接,并與所述多個聊天客戶終端保持長連接以向其提供聊天服務;聊天室管理服務器,用于控制管理所述SOCKET服務器和聊天客戶終端。本發明在聊天客戶終端高并發的情況下,也能夠獲得聊天服務器系統的實時響應。
文檔編號H04L12/58GK102045270SQ20101056824
公開日2011年5月4日 申請日期2010年11月30日 優先權日2010年11月30日
發明者王碩 申請人:北京迅捷英翔網絡科技有限公司