一種高實(shí)時(shí)性Web應(yīng)用系統(tǒng)及其數(shù)據(jù)實(shí)時(shí)推送方法
【專利摘要】本發(fā)明公開了一種高實(shí)時(shí)性Web應(yīng)用系統(tǒng)及其數(shù)據(jù)實(shí)時(shí)推送方法,所述系統(tǒng)中消息投遞接口、數(shù)據(jù)推送服務(wù)模塊和DCN監(jiān)聽服務(wù)模塊的承載協(xié)議為WebSocket協(xié)議;數(shù)據(jù)推送服務(wù)模塊和DCN監(jiān)聽服務(wù)模塊采用Node.js實(shí)現(xiàn);客戶端可將需要發(fā)送的數(shù)據(jù)或消息發(fā)送至數(shù)據(jù)推送服務(wù)模塊用于發(fā)送至其他客戶端;消息投遞接口用于外部數(shù)據(jù)或消息的輸入接口;DCN監(jiān)聽服務(wù)模塊用于獲得Oracal數(shù)據(jù)庫的數(shù)據(jù)變化信息;所述數(shù)據(jù)實(shí)時(shí)推送方法包括了外部數(shù)據(jù)的推送、客戶單之間的數(shù)據(jù)推送以及Oracal數(shù)據(jù)庫變化數(shù)據(jù)的推送。本發(fā)明使得整個(gè)Web應(yīng)用系統(tǒng)完成數(shù)據(jù)的實(shí)時(shí)推送和廣播,并且結(jié)構(gòu)簡單,易于擴(kuò)展。
【專利說明】一種高實(shí)時(shí)性Web應(yīng)用系統(tǒng)及其數(shù)據(jù)實(shí)時(shí)推送方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種高實(shí)時(shí)性Web應(yīng)用系統(tǒng)及其數(shù)據(jù)實(shí)時(shí)推送方法。
【背景技術(shù)】
[0002]目前,開發(fā)人員想實(shí)現(xiàn)一些實(shí)時(shí)的Web應(yīng)用最常用的為Polling和Comet技術(shù),而Comet技術(shù)實(shí)際上是輪詢技術(shù)的改進(jìn),又可細(xì)分為兩種實(shí)現(xiàn)方式,一種是長輪詢機(jī)制,一種稱為流技術(shù)。Polling是最早的一種實(shí)現(xiàn)實(shí)時(shí)Web應(yīng)用的方案??蛻舳艘砸欢ǖ臅r(shí)間間隔向服務(wù)端發(fā)出請求,以頻繁請求的方式來保持客戶端和服務(wù)器端的同步;長輪詢是對定時(shí)輪詢的改進(jìn)和提高,目地是為了降低無效的網(wǎng)絡(luò)傳輸,當(dāng)服務(wù)器端沒有數(shù)據(jù)更新的時(shí)候,連接會(huì)保持一段時(shí)間周期直到數(shù)據(jù)或狀態(tài)改變或者時(shí)間過期,通過這種機(jī)制來減少無效的客戶端和服務(wù)器間的交互;流技術(shù)方案通常就是在客戶端的頁面使用一個(gè)隱藏的窗口向服務(wù)端發(fā)出一個(gè)長連接的請求,服務(wù)器端接到這個(gè)請求后作出回應(yīng)并不斷更新連接狀態(tài)以保證客戶端和服務(wù)器端的連接不過期,通過這種機(jī)制可以將服務(wù)器端的信息源源不斷地推向客戶端。然而,以上這些技術(shù)都不是真正的實(shí)時(shí)技術(shù),在實(shí)際的應(yīng)用中,開發(fā)人員往往需要構(gòu)造兩個(gè)HTTP連接來模擬客戶端和服務(wù)器之間的雙向通訊,一個(gè)連接用來處理客戶端到服務(wù)器端的數(shù)據(jù)傳輸,一個(gè)連接用來處理服務(wù)器端到客戶端的數(shù)據(jù)傳輸,這不可避免地增加了編程實(shí)現(xiàn)的復(fù)雜度,也增加了服務(wù)器端的負(fù)載,制約了應(yīng)用系統(tǒng)的擴(kuò)展性。
【發(fā)明內(nèi)容】
[0003]發(fā)明目的:本發(fā)明的發(fā)明目的是針對現(xiàn)有技術(shù)的不足而公開了一種高實(shí)時(shí)性Web應(yīng)用系統(tǒng),使得整個(gè)Web應(yīng)用系統(tǒng)完成數(shù)據(jù)的實(shí)時(shí)推送和廣播,并且結(jié)構(gòu)簡單易于擴(kuò)展。
[0004]技術(shù)方案:為了實(shí)現(xiàn)發(fā)明的發(fā)明目的,本發(fā)明公開了一種高實(shí)時(shí)性Web應(yīng)用系統(tǒng),包括客戶端、消息投遞接口、數(shù)據(jù)推送服務(wù)模塊、客戶端會(huì)話管理模塊以及DCN監(jiān)聽服務(wù)模塊;消息投遞接口、數(shù)據(jù)推送服務(wù)模塊和DCN監(jiān)聽服務(wù)模塊的承載協(xié)議為WebSocket協(xié)議;數(shù)據(jù)推送服務(wù)模塊和DCN監(jiān)聽服務(wù)模塊采用Node, js實(shí)現(xiàn);客戶端可將需要發(fā)送的數(shù)據(jù)或消息發(fā)送至數(shù)據(jù)推送服務(wù)模塊用于發(fā)送至其他客戶端;消息投遞接口用于外部數(shù)據(jù)或消息的輸入接口 ;DCN監(jiān)聽服務(wù)模塊用于獲得Oracal數(shù)據(jù)庫的數(shù)據(jù)變化信息;數(shù)據(jù)推送服務(wù)模塊用于將消息投遞接口、DCN監(jiān)聽服務(wù)模塊以及客戶端廣播請求的數(shù)據(jù)或消息推送到所有客戶端;客戶端會(huì)話管理模塊用于客戶端網(wǎng)絡(luò)連接關(guān)系的管理及監(jiān)測。
[0005]作為優(yōu)選,為了使得客戶端之間的數(shù)據(jù)信息實(shí)現(xiàn)雙向?qū)崟r(shí)性同步并且保證數(shù)據(jù)信息的安全性,每個(gè)接入會(huì)話接入接口的客戶端都生成一個(gè)WebSocket雙向長連接會(huì)話,這些會(huì)話由客戶端會(huì)話管理模塊管理及監(jiān)測。
[0006]作為優(yōu)選,為了使得消息投遞接口可以通過簡單的HTTP請求就能實(shí)現(xiàn)廣播消息的投遞,所述消息投遞接口為采用Node, js實(shí)現(xiàn)的一個(gè)Webserver服務(wù)。
[0007]作為優(yōu)選,為了提高監(jiān)聽效率,DCN監(jiān)聽服務(wù)模塊設(shè)有定時(shí)器,定時(shí)器到達(dá)時(shí)DCN監(jiān)聽服務(wù)模塊將Oracal數(shù)據(jù)庫的數(shù)據(jù)變化信息發(fā)送至數(shù)據(jù)推送服務(wù)模塊。[0008]為了進(jìn)一步實(shí)現(xiàn)發(fā)明目的,本發(fā)明還公開了一種使用上述Web應(yīng)用系統(tǒng)數(shù)據(jù)實(shí)時(shí)推送方法,包括以下部分:
[0009]( I)當(dāng)有外部消息或者數(shù)據(jù)到達(dá)消息投遞接口,消息投遞接口通過數(shù)據(jù)推送服務(wù)模塊將外部消息或者數(shù)據(jù)推送至客戶端;
[0010](2)當(dāng)有一個(gè)客戶端請求推送消息或者數(shù)據(jù)至其他客戶端,該客戶端就會(huì)通過會(huì)話接入接口進(jìn)行數(shù)據(jù)或者消息的推送;
[0011](3)當(dāng)Oracal數(shù)據(jù)庫的數(shù)據(jù)發(fā)生變化,DCN監(jiān)聽服務(wù)模塊則會(huì)通過數(shù)據(jù)推送服務(wù)模塊將該變化數(shù)據(jù)提送至各客戶端。
[0012]有益效果:本發(fā)明與現(xiàn)有技術(shù)相比:采用新興的HTML5標(biāo)準(zhǔn)之一 WebSocket技術(shù),高效的異步中間件Nodejs技術(shù),結(jié)合Oracle數(shù)據(jù)庫的DCN技術(shù),實(shí)現(xiàn)了一套完整的B/S三層Web應(yīng)用數(shù)據(jù)實(shí)時(shí)推送和廣播架構(gòu),使得整個(gè)Web應(yīng)用系統(tǒng)完成數(shù)據(jù)的實(shí)時(shí)推送和廣播,并且結(jié)構(gòu)簡單易于擴(kuò)展。
【專利附圖】
【附圖說明】
[0013]圖1為本發(fā)明Web應(yīng)用系統(tǒng)的結(jié)構(gòu)圖;
[0014]圖2為本發(fā)明客戶端會(huì)話接入及會(huì)話管理的示意圖;
[0015]圖3為本發(fā)明外部消息源向客戶端實(shí)時(shí)推送或廣播數(shù)據(jù)示意圖;
[0016]圖4為本發(fā)明一個(gè)客戶端向其他客戶端實(shí)時(shí)廣播數(shù)據(jù)示意圖;
[0017]圖5為DCN監(jiān)聽服務(wù)模塊向客戶端實(shí)時(shí)廣播數(shù)據(jù)示意圖;
[0018]圖6為DCN監(jiān)聽服務(wù)模塊的監(jiān)聽示意圖。
【具體實(shí)施方式】
[0019]下面結(jié)合圖對本發(fā)明作更進(jìn)一步的說明。
[0020]如圖1所示,Web應(yīng)用系統(tǒng)由消息投遞接口、數(shù)據(jù)推送服務(wù)模塊、客戶端會(huì)話管理模塊、DCN監(jiān)聽服務(wù)模塊以及會(huì)話接入接口組成;消息投遞接口、數(shù)據(jù)推送服務(wù)模塊、DCN監(jiān)聽服務(wù)模塊和會(huì)話接入接口的承載協(xié)議為WebSocket協(xié)議;數(shù)據(jù)推送服務(wù)模塊和DCN監(jiān)聽服務(wù)模塊采用Node, js實(shí)現(xiàn);客戶端可將需要發(fā)送的數(shù)據(jù)或消息發(fā)送至數(shù)據(jù)推送服務(wù)模塊用于發(fā)送至其他客戶端;消息投遞接口用于外部數(shù)據(jù)或消息的輸入接口 ;DCN監(jiān)聽服務(wù)模塊用于獲得Oracal數(shù)據(jù)庫的數(shù)據(jù)變化信息;數(shù)據(jù)推送服務(wù)模塊用于將消息投遞接口、DCN監(jiān)聽服務(wù)模塊以及客戶端廣播請求的數(shù)據(jù)或消息推送到所有客戶端;客戶端會(huì)話管理模塊用于客戶端網(wǎng)絡(luò)連接關(guān)系的管理及監(jiān)測;會(huì)話接入接口可監(jiān)聽指定的網(wǎng)絡(luò)端口,并且每個(gè)接入會(huì)話接入接口的客戶端都生成一個(gè)WebSocket雙向長連接會(huì)話,這些會(huì)話由客戶端會(huì)話管理模塊管理及監(jiān)測。
[0021]如圖2所示,當(dāng)有客戶端接入時(shí)則會(huì)添加會(huì)話并且更新客戶端會(huì)話管理模塊的會(huì)話列表;當(dāng)有連接超時(shí)或者連接斷開時(shí)則會(huì)刪除會(huì)話并且更新客戶端會(huì)話管理模塊的會(huì)話列表。
[0022]如圖3所示,基于如圖1的Web應(yīng)用系統(tǒng),消息源或數(shù)據(jù)源向消息投遞接口發(fā)送請求連接的請求,消息投遞接口回執(zhí)接手/建立連接,消息源或數(shù)據(jù)源開始向消息投遞接口投遞信息,結(jié)束后斷開連接;消息投遞接口將數(shù)據(jù)發(fā)送至數(shù)據(jù)推送服務(wù)模塊,數(shù)據(jù)推送服務(wù)模塊則將數(shù)據(jù)發(fā)送至與其連接的所有客戶端。與此同時(shí),客戶端會(huì)話管理模塊會(huì)管理這會(huì)話列表。
[0023]如圖4所示,當(dāng)某個(gè)客戶端將其需要發(fā)送的數(shù)據(jù)通過廣播的形式發(fā)送至數(shù)據(jù)推送服務(wù)模塊,數(shù)據(jù)推送服務(wù)模塊再將其發(fā)至與其連接的所有客戶端。
[0024]如圖5所示,DCN監(jiān)聽服務(wù)模塊與某個(gè)Oracle數(shù)據(jù)庫建立連接/監(jiān)聽關(guān)系,這時(shí)如圖6所示,當(dāng)此Oracle數(shù)據(jù)庫的數(shù)據(jù)發(fā)生變更時(shí)則將其存儲(chǔ)于暫存隊(duì)列中并且啟動(dòng)定時(shí)器,等待定時(shí)器到達(dá)則DCN監(jiān)聽服務(wù)模塊將隊(duì)列中的數(shù)據(jù)進(jìn)行整合以廣播形式將變更數(shù)據(jù)發(fā)送至數(shù)據(jù)推送服務(wù)模塊,數(shù)據(jù)推送服務(wù)模塊則將數(shù)據(jù)發(fā)送至與其連接的所有客戶端。
[0025]以上的設(shè)計(jì)使得本發(fā)明的Web應(yīng)用系統(tǒng)可以實(shí)現(xiàn)三種類型的數(shù)據(jù)數(shù)據(jù)實(shí)時(shí)推送和廣播需求,包括從外部消息源向客戶端實(shí)時(shí)推送或廣播數(shù)據(jù)、任意一個(gè)客戶端向其他客戶端實(shí)時(shí)廣播數(shù)據(jù)以及高效的實(shí)時(shí)監(jiān)聽和捕獲Oracle數(shù)據(jù)庫的表數(shù)據(jù)變化。
【權(quán)利要求】
1.一種高實(shí)時(shí)性Web應(yīng)用系統(tǒng),其特征在于,包括客戶端、消息投遞接口、數(shù)據(jù)推送服務(wù)模塊、客戶端會(huì)話管理模塊、會(huì)話接入接口、Oracal數(shù)據(jù)庫以及DCN監(jiān)聽服務(wù)模塊; 消息投遞接口、數(shù)據(jù)推送服務(wù)模塊和DCN監(jiān)聽服務(wù)模塊的承載協(xié)議為WebSocket協(xié)議;數(shù)據(jù)推送服務(wù)模塊和DCN監(jiān)聽服務(wù)模塊采用Node, js實(shí)現(xiàn); 客戶端可將需要發(fā)送的數(shù)據(jù)或消息發(fā)送至數(shù)據(jù)推送服務(wù)模塊用于發(fā)送至其他客戶端;消息投遞接口用于外部數(shù)據(jù)或消息的輸入接口 ;DCN監(jiān)聽服務(wù)模塊用于獲得Oracal數(shù)據(jù)庫的數(shù)據(jù)變化信息并將變化信息發(fā)送至數(shù)據(jù)推送服務(wù)模塊;數(shù)據(jù)推送服務(wù)模塊用于將消息投遞接口、DCN監(jiān)聽服務(wù)模塊以及客戶端廣播請求的數(shù)據(jù)或消息推送到所有客戶端;客戶端會(huì)話管理模塊用于客戶端網(wǎng)絡(luò)連接關(guān)系的管理及監(jiān)測;會(huì)話接入接口用于監(jiān)聽指定的網(wǎng)絡(luò)端口并且用于客戶端的會(huì)話接入。
2.如權(quán)利要求1所述的一種高實(shí)時(shí)性Web應(yīng)用系統(tǒng),其特征在于,每個(gè)接入會(huì)話接入接口的客戶端都生成一個(gè)WebSocket雙向長連接會(huì)話,這些會(huì)話由客戶端會(huì)話管理模塊管理及監(jiān)測。
3.如權(quán)利要求1所述的一種高實(shí)時(shí)性Web應(yīng)用系統(tǒng),其特征在于,消息投遞接口為采用Node, js實(shí)現(xiàn)的一個(gè)WebServer服務(wù)。
4.如權(quán)利要求1所述的一種高實(shí)時(shí)性Web應(yīng)用系統(tǒng),其特征在于,DCN監(jiān)聽服務(wù)模塊設(shè)有定時(shí)器,定時(shí)器到達(dá)時(shí)DCN監(jiān)聽服務(wù)模塊將Oracal數(shù)據(jù)庫的數(shù)據(jù)變化信息發(fā)送至數(shù)據(jù)推送服務(wù)模塊。
5.使用權(quán)利要求1中Web應(yīng)用系統(tǒng)的數(shù)據(jù)實(shí)時(shí)推送方法,其特征在于,包括以下部分: (1)當(dāng)有外部消息或者數(shù)據(jù)到達(dá)消息投遞接口,消息投遞接口通過數(shù)據(jù)推送服務(wù)模塊將外部消息或者數(shù)據(jù)推送至客戶端; (2)當(dāng)有一個(gè)客戶端請求推送消息或者數(shù)據(jù)至其他客戶端,該客戶端就會(huì)通過會(huì)話接入接口進(jìn)行數(shù)據(jù)或者消息的推送; (3)當(dāng)Oracal數(shù)據(jù)庫的數(shù)據(jù)發(fā)生變化,DCN監(jiān)聽服務(wù)模塊則會(huì)通過數(shù)據(jù)推送服務(wù)模塊將該變化數(shù)據(jù)提送至各客戶端。
【文檔編號(hào)】H04L29/08GK103780681SQ201410004933
【公開日】2014年5月7日 申請日期:2014年1月6日 優(yōu)先權(quán)日:2014年1月6日
【發(fā)明者】苗陽, 陳瑛, 徐海靈, 李鵬飛 申請人:南京萊斯信息技術(shù)股份有限公司