欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于Websocket協(xié)議的即時通訊方法

文檔序號:7553890閱讀:1241來源:國知局
專利名稱:一種基于Websocket協(xié)議的即時通訊方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種計(jì)算機(jī)網(wǎng)絡(luò)處理技術(shù),特別是教育信息化行業(yè)的基于Websocket協(xié)議的即時通訊方法。
背景技術(shù)
隨著教育信息化的推廣以及最近幾年移動互聯(lián)網(wǎng)的飛速發(fā)展,依靠校訊通的短信、彩信等通道建立的家長、教師溝通橋梁已經(jīng)越來越不能滿足家長的需要,家長需要的是能在線跟老師實(shí)時交流,能傳輸圖片、語音的溝通工具。在保障用戶師隱私的同時,他們希望能在網(wǎng)站或者手機(jī)上能即時的跟好友溝通交流。目前網(wǎng)站注冊用戶已有幾百萬,日活躍用戶有一萬左右,傳統(tǒng)的基于servlet的阻塞技術(shù)是一個連接啟用一個線程,這樣就無法滿足這么多的活躍用戶長連接。而作為傳統(tǒng)實(shí)現(xiàn)comet的技術(shù)的定時刷新,由于需要在很短的間隔內(nèi)不停發(fā)送請求用來獲取服務(wù)狀態(tài),導(dǎo)致服務(wù)負(fù)載增大,而且考慮到在手機(jī)終端上,頻繁的定時刷新請求會導(dǎo)致手機(jī)電量很快消耗。在聊天消息的處理上,傳統(tǒng)方式是將消息插入到數(shù)據(jù)庫中,然后判斷用戶是否在線,如果在線側(cè)投遞給用戶,同時將消息狀態(tài)設(shè)置為已投遞,如果沒有側(cè)保留,等用戶下次登錄時候發(fā)送離線消息給用戶。由于網(wǎng)站活躍用戶人數(shù)過多,這次對數(shù)據(jù)庫的頻繁訪問會增加數(shù)據(jù)庫壓力導(dǎo)致系統(tǒng)故障的增加,而且這種方式也不能很好處理群組消息。發(fā)明內(nèi)容
發(fā)明目的:本發(fā)明所要解決的技術(shù)問題是針對現(xiàn)有技術(shù)的不足,提供一種基于Websocket協(xié)議的即時通訊方法。
為了解決上述技術(shù)問題,本發(fā)明公開了一種基于Websocket協(xié)議的即時通訊方法,在網(wǎng)絡(luò)通訊層和業(yè)務(wù)邏輯層之間加入Websocket協(xié)議和消息隊(duì)列服務(wù)HornetQ進(jìn)行消息傳輸; 使用基于開源的網(wǎng)絡(luò)處理框架netty的webbit框架提供websocket協(xié)議的基本服務(wù),在websocket握手協(xié)議成功后,客戶端與服務(wù)建立網(wǎng)絡(luò)鏈接,發(fā)送認(rèn)證登錄信息,認(rèn)證通過后,服務(wù)端啟動消息隊(duì)列服務(wù)HornetQ,將客戶端登錄用戶加入到等待會話隊(duì)列中等待消息的激活,收到激活消息后,通過websocket協(xié)議將消息返回給客戶端。
本發(fā)明中,基于websocket的im技術(shù),nio的高并發(fā)長連接,以及基于hornetq消息隊(duì)列的高性能消息處理。通過websocket協(xié)議穿透防火墻發(fā)送即時消息數(shù)據(jù),在消息隊(duì)列服務(wù)HornetQ上注消息監(jiān)聽,快速處理用戶消息。
本發(fā)明中,將多個隊(duì)列同時綁定一個地址,用于實(shí)現(xiàn)群聊功能。
本發(fā)明中,設(shè)置有效時間,在有效時間內(nèi)未能被處理的消息都會自動轉(zhuǎn)到過期隊(duì)列中,后臺服務(wù)將這些過期的消息保存進(jìn)數(shù)據(jù)庫,在終端上線時進(jìn)行提醒服務(wù)。
WebSocket是Html 5 —種新的協(xié)議,它實(shí)現(xiàn)了瀏覽器與服務(wù)器的全雙工通信,HornetQ是一個支持集群和多種協(xié)議的可嵌入、高性能的異步消息系統(tǒng),具有持久化的消息引擎性能和靈活的集群功能。本發(fā)明米用了 html5中的websocket來作為實(shí)時通訊的技術(shù),目前支持websocket的瀏覽器有ie9, safar1、firefox、chrome已經(jīng)涵蓋了所有的主流瀏覽器,在不支持websocket的瀏覽器上,本發(fā)明采用了 flash作為替換方案。為了解決大量的長連接,底層采用了基于netty實(shí)現(xiàn)的nio框架,減少長連接所帶來的傳統(tǒng)線程池消耗,為了減輕數(shù)據(jù)庫處理消息的壓力,采用了 hornetq作為高性能的隊(duì)列服務(wù),利用hornetq的多queue可以綁定同一個address的特性,將班級的address與用戶個人queue綁定,輕松實(shí)現(xiàn)了群聊功能。為了使系統(tǒng)的負(fù)載能力大幅提供,本發(fā)明對每個消息都設(shè)置了有效時間,在有效時間內(nèi)未能被處理的消息都會自動轉(zhuǎn)到過期隊(duì)列中,后臺服務(wù)會自動將這些過期的消息保存進(jìn)數(shù)據(jù)庫,以備以后查詢檢索。有益效果:本發(fā)明基于websocket、Hornetq的im方法,只需要使用一種通訊協(xié)議,就可以實(shí)現(xiàn)無縫接入手機(jī)、web、pc等多種不同形式的客戶端,實(shí)現(xiàn)客戶端和服務(wù)器的實(shí)時通信?;趆ornetq的消息隊(duì)列提供了高性能、高實(shí)時的消息處理機(jī)制。本發(fā)明尤其是基于Websocket、Hornetq技術(shù)的web、手機(jī)、pc的實(shí)時聊天技術(shù),在大量長連接情況下,聊天服務(wù)的性能平滑擴(kuò)展問題,涉及到聊天服務(wù)器處理性能和擴(kuò)展能力的提升。本發(fā)明解決了高并發(fā)高鏈接情況下快速處理用戶消息,提高系統(tǒng)的負(fù)載均衡能力,實(shí)現(xiàn)了長連接情況下聊天服務(wù)器的性能提升和能力的擴(kuò)展,降低了頻繁訪問時數(shù)據(jù)庫系統(tǒng)故障,有效的處理了群組消息。


下面結(jié)合附圖和具體實(shí)施方式
對本發(fā)明做更進(jìn)一步的具體說明:
圖1為現(xiàn)有技術(shù)的傳統(tǒng)不意圖。圖2為基于Websocket協(xié)議的即時通訊技術(shù)不意圖。圖3為基于Websocket協(xié)議的即時通訊架構(gòu)圖。
具體實(shí)施例方式如圖1和圖2所示,本發(fā)明相對于現(xiàn)有技術(shù),提供了一種基于Websocket協(xié)議的即時通訊方法,在網(wǎng)絡(luò)通訊層和業(yè)務(wù)邏輯層之間加入Websocket協(xié)議和消息隊(duì)列服務(wù)HornetQ進(jìn)行消息傳輸;使用基于開源的網(wǎng)絡(luò)處理框架netty的webbit框架提供websocket協(xié)議的基本服務(wù),在websocket握手協(xié)議成功后,客戶端與服務(wù)建立網(wǎng)絡(luò)鏈接,發(fā)送認(rèn)證登錄信息,認(rèn)證通過后,服務(wù)端啟動消息隊(duì)列服務(wù)HornetQ,將客戶端登錄用戶加入到等待會話隊(duì)列中等待消息的激活,收到激活消息后,通過websocket協(xié)議將消息返回給客戶端。本發(fā)明通過websocket協(xié)議穿透防火墻發(fā)送即時消息數(shù)據(jù),在消息隊(duì)列服務(wù)HornetQ上注消息監(jiān)聽,快速處理用戶消息。本發(fā)明將多個隊(duì)列同時綁定一個地址,用于實(shí)現(xiàn)群聊功能。本發(fā)明設(shè)置有效時間,在有效時間內(nèi)未能被處理的消息都會自動轉(zhuǎn)到過期隊(duì)列中,后臺服務(wù)將這些過期的消息保存進(jìn)數(shù)據(jù)庫,在終端上線時進(jìn)行提醒服務(wù)。本發(fā)明實(shí)現(xiàn)了 web瀏覽器、手機(jī)終端、PC機(jī)相互訪問時提高了訪問速度,減少了數(shù)據(jù)庫連接次數(shù),實(shí)現(xiàn)了基于hornetq的多queue連接同一 address的群組模式。并且在展現(xiàn)層中抽象出網(wǎng)絡(luò)通訊層,更好的應(yīng)用webscoket進(jìn)行數(shù)據(jù)訪問。
如圖2所示,本發(fā)明在展現(xiàn)層中加入了網(wǎng)絡(luò)通訊層,網(wǎng)絡(luò)通訊層的作用是應(yīng)用webscoket連接業(yè)務(wù)邏輯層,將前臺資源例如圖片、消息、語音等信息,傳輸?shù)綌?shù)據(jù)庫或者其他終端設(shè)備。如果瀏覽器不支持webscoket,就使用flash作為替換方案,實(shí)現(xiàn)以上功能。同時,本發(fā)明利用hornetq技術(shù),將多queue可以綁定同一個address,這就實(shí)現(xiàn)了群聊功能。在消息處理機(jī)制中,本發(fā)明采用了設(shè)置有效時間,在有效時間內(nèi)未能被處理的消息都會自動轉(zhuǎn)到過期隊(duì)列中,后臺服務(wù)會自動將這些過期的消息保存進(jìn)數(shù)據(jù)庫,在終端上線時進(jìn)行提醒服務(wù)。
5.1 WebSocket 介紹: UHTML5規(guī)范中定義,WebSocket在瀏覽器和服務(wù)器之間采用單socket全雙工傳輸來“推送”和“拉取”信息??梢杂行У谋苊釩omet中存在的連接和移植問題。
2、在服務(wù)器和客戶端之間,通過WebSocket協(xié)議在第一次“握手”時建立,同時它也是基于底層的TCP/IP協(xié)議??蛻舳撕推胀ǖ臑g覽器一樣通過80或443端口和服務(wù)器進(jìn)行請求握手,服務(wù)器根據(jù)http header識別websocket請求,握手成功后就進(jìn)入到數(shù)據(jù)的長連接傳輸階段。
3、WebSocket的數(shù)據(jù)傳輸是基于巾貞的方式,數(shù)據(jù)以utf_8編碼。Websocket使瀏覽器不需要安裝插件,就可以實(shí)現(xiàn)web通信的高效性和穩(wěn)定性。
4、WebS0Clet數(shù)據(jù)幀能夠以雙通道模式發(fā)送和接受數(shù)據(jù),成功鏈接后,客戶端和服務(wù)器數(shù)據(jù)交互是通過瀏覽器里的websocket接口中onmessage和postmessage方法實(shí)現(xiàn)。
5.2 Html5 WebSocket 在應(yīng)用層的特點(diǎn): I無縫穿過防火墻和路由器 I支持跨域交流 I兼容二進(jìn)制數(shù)據(jù) I完美整合基于cookie的認(rèn)證 I支持http負(fù)載平衡5.3 HornetQ 介紹: HornetQ是一個支持集群和多種協(xié)議,可嵌入、高性能的異步消息系統(tǒng),完全支持JMS,并能夠定義屬于自己的消息API,最大限度的提升了 HornetQ的性能和靈活性。
5.4 HornetQ 特點(diǎn): UHornetQ在消息引擎方面具有持久化性能。
2、完全使用POJO設(shè)計(jì),盡量不依賴第三方包,既可以獨(dú)立運(yùn)行也可以減少入侵性,同時可以與其他java應(yīng)用程序服務(wù)器集成使用。
3、具有完善的錯誤處理機(jī)制,提供故障自動轉(zhuǎn)移和服務(wù)器復(fù)制功能,可以減少消息丟失。
4、具有靈活 的集群功能,提升性能的消息負(fù)載均衡,可以靈活的配置消息路由。
5、提供大量的管理API和監(jiān)控服務(wù)器,可以無縫與應(yīng)用程序服務(wù)器整合,共同工作再一個HA環(huán)境中。
如圖3軟件架構(gòu)圖所示,本實(shí)施案例采用了 N層架構(gòu)。層次之間采用松散耦合,即一個層次的修改,盡可能小的影響其他層次,最好是零更改。N層架構(gòu)包括:UI展現(xiàn)層、n邏輯層、服務(wù)層、業(yè)務(wù)層、持久層。UI展現(xiàn)層:提供給用戶的web頁面、手機(jī)終端頁面、PC客戶端界面。本層只提供交互的展現(xiàn),例如web頁面的布局、手機(jī)終端的屏幕分辨率、PC客戶端的按鈕。UI邏輯層:基于n展現(xiàn)層的n邏輯,例如web頁面具體下拉列表的實(shí)現(xiàn)類、手機(jī)終端的通信方式、PC客戶端的按鈕的實(shí)現(xiàn)類等。服務(wù)層:也叫應(yīng)用層,主要是將n邏輯層的業(yè)務(wù)流進(jìn)行粒度分析,制定出相應(yīng)粒度方案,然后暴露服務(wù)、注冊服務(wù),最后根據(jù)具體的業(yè)務(wù)邏輯層的業(yè)務(wù)邏輯調(diào)用持久層,把最后結(jié)果返還給n邏輯層。業(yè)務(wù)層:也叫業(yè)務(wù)邏輯層,主要是提供整個系統(tǒng)的業(yè)務(wù)邏輯,來源是項(xiàng)目前期的需求分析后形成的領(lǐng)域模型。根據(jù)領(lǐng)域模型,抽象出具體的實(shí)體類、控制類、邊界類,再根據(jù)具體實(shí)現(xiàn)類,制定出不同的實(shí)現(xiàn)算法,以供服務(wù)層調(diào)用,在業(yè)務(wù)層中,可以應(yīng)用當(dāng)前比較流行的spring框架。因?yàn)镾pring框架擁有IOC和AOP特點(diǎn)。持久層:提供數(shù)據(jù)庫訪問的便捷,將以二維表形式的數(shù)據(jù)庫,orm成面向?qū)ο蟮膶ο髮?shí)體。以供服務(wù)層調(diào)用。接下來我們了解一下基于websocket、hornetq技術(shù)實(shí)現(xiàn)的校訊通互聯(lián)網(wǎng)聊天服務(wù)的代碼樣列,其中包括 AppServerHandler, UserSession, HornetPubsublmpl。I AppServerHandler處理客戶端的登錄請求,負(fù)責(zé)維護(hù)連接的合法性。AppServerHandler提供了一些方法。以下有具體的代碼說明及具體實(shí)現(xiàn)。AppServerH andler提供了以下幾個重要的方法:
1.AppServerHandler ();構(gòu)造函數(shù)
2.0nOpen (WebSocketConnection connection);新的 WebSocket 連接
3.0nClose (WebSocketConnection connection);關(guān)閉 WebSocket 連接
4.0nMessage(WebSocketConnection connection, String message);將前臺的jason消息傳遞到后臺
5.User authenticate (String from, String token);用戶鑒定
I UserSession負(fù)責(zé)處理用戶的消息請求,負(fù)責(zé)與hornetq服務(wù)的接口。UserSession提供了一些方法。以下有具體的代碼說明及具體實(shí)現(xiàn)。1.load (User user);讀取用戶信息
2.get (String uid) ;UserSession 的 get 方法
3.attachConnection (WebSocketConnection connection);建立連接
4.detachConnection (WebSocketConnection connection);分離連接
5.cleanUp ();沒有連接
6.process (String action, JsonObject jsonOb ject);進(jìn)程說明
7.process (MessageRequest req);對 process 進(jìn)行了重載
8.send (ResponseData data);發(fā)送消息
I HornetPub sub Imp I 負(fù)責(zé) hornetq 隊(duì)列服務(wù)的啟動、監(jiān)聽、投遞。HornetPubsublmpl提供了一些方法。以下有具體的代碼說明及具體實(shí)現(xiàn)。1.HornetPubsublmpl (ClientSession session);構(gòu)造函數(shù)2.subscribe(String topic, String queue, final SubscribeHandlerhandler);建立 queue3.unsubscribe (String queue);關(guān)閉 queue4.publish (String topic, Object message, boolean duarble, long expir);啟動hornetq隊(duì)列服務(wù) 5.serialize (Object o);序列化 6.deserialize (byte [] in);發(fā)序列化 在瀏覽器前端上,本發(fā)明抽象出了網(wǎng)絡(luò)通訊層,如果瀏覽器支持webscoket就使用瀏覽器的原生websocket能力,如果瀏覽器不支持,就使用flash作為替換方案,經(jīng)過實(shí)驗(yàn)證明,webscoket的實(shí)時性得到了很好的體現(xiàn)。
本實(shí)施例中可能涉及的英文名詞以及中文含義對應(yīng)如下: HTTP超文本傳輸協(xié)議 ie9 微軟公司出品的網(wǎng)絡(luò)瀏覽器 safari蘋果公司出品的網(wǎng)絡(luò)瀏覽器 firefox M0ZZLIA開源組織出品的網(wǎng)絡(luò)瀏覽器 chrome google公司出品的網(wǎng)絡(luò)瀏覽器 WebSocket網(wǎng)頁套接字 HornetQ redhat開源的消息隊(duì)列服務(wù) Netty redhat開源的網(wǎng)絡(luò)處理框架 Nio多路(non-bloking)非阻塞式的高伸縮性網(wǎng)絡(luò)I/O servlet在JAVA服務(wù)器上運(yùn)行的小程序 queue 隊(duì)列 comet基于HTTP長連接的服務(wù)器推送技術(shù) address 地址 IM即時通訊 flash由macromedia公司推出的交互式矢量圖和Web動畫的標(biāo)準(zhǔn)本發(fā)明提供了一種基于Web socket協(xié)議的即時通訊方法,具體實(shí)現(xiàn)該技術(shù)方案的方法和途徑很多,以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。本實(shí)施例中未明確的各組成部分均可用現(xiàn)有技術(shù)加以實(shí)現(xiàn)。
權(quán)利要求
1.一種基于Websocket協(xié)議的即時通訊方法,其特征在于,在網(wǎng)絡(luò)通訊層和業(yè)務(wù)邏輯層之間加入Websocket協(xié)議和消息隊(duì)列服務(wù)HornetQ進(jìn)行消息傳輸; 使用基于開源的網(wǎng)絡(luò)處理框架netty的webbit框架提供websocket協(xié)議的基本服務(wù),在websocket握手協(xié)議成功后,客戶端與服務(wù)建立網(wǎng)絡(luò)鏈接,發(fā)送認(rèn)證登錄信息,認(rèn)證通過后,服務(wù)端啟動消息隊(duì)列服務(wù)HornetQ,將客戶端登錄用戶加入到等待會話隊(duì)列中等待消息的激活,收到激活消息后,通過websocket協(xié)議將消息返回給客戶端。
2.根據(jù)權(quán)利要求1所述的一種基于Websocket協(xié)議的即時通訊方法,其特征在于,通過websocket協(xié)議穿透防火墻發(fā)送即時消息數(shù)據(jù),在消息隊(duì)列服務(wù)HornetQ上注消息監(jiān)聽,快速處理用戶消息。
3.根據(jù)權(quán)利要求1或2所述的一種基于Websocket協(xié)議的即時通訊方法,其特征在于,將多個隊(duì)列同時綁定一個地址,用于實(shí)現(xiàn)群聊功能。
4.根據(jù)權(quán)利要求1或2所述的一種基于Websocket協(xié)議的即時通訊方法,其特征在于,設(shè)置有效時間,在有效時間內(nèi)未能被處理的消息都會自動轉(zhuǎn)到過期隊(duì)列中,后臺服務(wù)將這些過期的消息保存進(jìn)數(shù)據(jù)庫,在終端上線時進(jìn)行提醒服務(wù)。
全文摘要
本發(fā)明公開了一種基于Websocket協(xié)議的即時通訊方法,在網(wǎng)絡(luò)通訊層和業(yè)務(wù)邏輯層之間加入Websocket協(xié)議和消息隊(duì)列服務(wù)HornetQ進(jìn)行消息傳輸;使用基于開源的網(wǎng)絡(luò)處理框架netty的webbit框架提供websocket協(xié)議的基本服務(wù),在websocket握手協(xié)議成功后,客戶端與服務(wù)建立網(wǎng)絡(luò)鏈接,發(fā)送認(rèn)證登錄信息,認(rèn)證通過后,服務(wù)端啟動消息隊(duì)列服務(wù)HornetQ,將客戶端登錄用戶加入到等待會話隊(duì)列中等待消息的激活,收到激活消息后,通過websocket協(xié)議將消息返回給客戶端。
文檔編號H04L29/06GK103139051SQ20131009311
公開日2013年6月5日 申請日期2013年3月22日 優(yōu)先權(quán)日2013年3月22日
發(fā)明者劉本中, 司震, 鄭國松, 胡明慧, 劉斌, 宋煒偉 申請人:南京信通科技有限責(zé)任公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
盐源县| 海盐县| 宣恩县| 绥江县| 巴林左旗| 永州市| 文成县| 江永县| 临沭县| 通海县| 离岛区| 黔南| 墨脱县| 高碑店市| 宜丰县| 鄱阳县| 元谋县| 德化县| 公主岭市| 盈江县| 通化县| 苏尼特右旗| 越西县| 永登县| 迁安市| 昔阳县| 昌图县| 栾城县| 瑞丽市| 祁连县| 合作市| 卓尼县| 百色市| 桦川县| 桂平市| 祁门县| 永济市| 龙门县| 凤山县| 永城市| 黔东|