專利名稱:一種通過套接字連接進(jìn)行通信的方法、系統(tǒng)及設(shè)備的制作方法
技術(shù)領(lǐng)域:
本申請(qǐng)涉及通信領(lǐng)域,尤其涉及一種通過套接字(Socket)連接進(jìn)行通信的方法、 系統(tǒng)及設(shè)備。
背景技術(shù):
隨著因特網(wǎng)技術(shù)的發(fā)展,越來越多的用戶利用安裝在終端內(nèi)的瀏覽器瀏覽網(wǎng)站服務(wù)器推送的數(shù)據(jù)。目前,常規(guī)的瀏覽網(wǎng)站頁面使用的是超文本傳輸協(xié)議(HTTP)請(qǐng)求方式, 即當(dāng)訪問用戶登錄網(wǎng)站后,在瀏覽器中嵌入的面向?qū)ο蟮膭?dòng)態(tài)類型的區(qū)分大小寫的客戶端腳本語言(JavaScript)生成的腳本模塊(后續(xù)稱之為Jav必cript腳本)觸發(fā)瀏覽器向網(wǎng)站服務(wù)器發(fā)送HTTP請(qǐng)求。由于發(fā)送的HTTP請(qǐng)求是數(shù)據(jù)傳輸通道之間的短連接,在請(qǐng)求達(dá)到網(wǎng)站服務(wù)器后, HTTP請(qǐng)求建立的通道就斷開,因此,只能是在每次有需求時(shí)不斷發(fā)起HTTP請(qǐng)求,導(dǎo)致在有大量用戶訪問網(wǎng)站時(shí),網(wǎng)站服務(wù)器的業(yè)務(wù)壓力很大。為了解決常規(guī)的HTTP協(xié)議的短連接給網(wǎng)站服務(wù)器造成壓力過大的問題,在瀏覽器瀏覽網(wǎng)頁的過程中,提出了利用Socket通信方式替代常規(guī)的HTTP輪詢請(qǐng)求方式。當(dāng)訪問用戶登錄網(wǎng)站時(shí),瀏覽器從網(wǎng)站服務(wù)器中下載Jav必cript腳本,且建立與網(wǎng)站服務(wù)器之間的Socket長(zhǎng)連接。由于Socket長(zhǎng)連接不會(huì)在數(shù)據(jù)傳輸后馬上斷開,使得網(wǎng)站服務(wù)器可以實(shí)時(shí)通過Socket連接通道向?yàn)g覽器推送數(shù)據(jù),在瀏覽網(wǎng)頁的過程中網(wǎng)站服務(wù)器不再需要承受大量的HTTP請(qǐng)求,降低了網(wǎng)站服務(wù)器的工作壓力,提升了網(wǎng)站服務(wù)器的響應(yīng)速度。通過Socket長(zhǎng)連接在一定程度上降低了網(wǎng)站服務(wù)器的工作壓力,但是,如果在一個(gè)終端上同時(shí)啟動(dòng)多個(gè)瀏覽器,每個(gè)瀏覽器都產(chǎn)生一個(gè)與網(wǎng)站服務(wù)器的Socket長(zhǎng)連接,則網(wǎng)站服務(wù)器將為該終端啟動(dòng)的多個(gè)瀏覽器維護(hù)多條Socket長(zhǎng)連接。如果有大量的終端使用該網(wǎng)站服務(wù)器提供的數(shù)據(jù)資源,而每個(gè)終端上都啟動(dòng)多個(gè)瀏覽器,則網(wǎng)站服務(wù)器需要維護(hù)Socket長(zhǎng)連接數(shù)量也非常巨大,占用了網(wǎng)站服務(wù)器的大量資源。例如有10000臺(tái)終端, 每臺(tái)終端啟動(dòng)4個(gè)瀏覽器登錄網(wǎng)站,則網(wǎng)站服務(wù)器需要維持40000條Socket長(zhǎng)連接。為了解決上述網(wǎng)站服務(wù)器維護(hù)大量的Socket長(zhǎng)連接導(dǎo)致網(wǎng)站服務(wù)器的資源占用量大的問題,目前提出了通過安裝基于瀏覽器的插件,如Flash、ActivieX、Applet等的方式來共享Socket長(zhǎng)連接的技術(shù)方案。以安裝Flash插件為例,該技術(shù)方案的主要內(nèi)容是在瀏覽器內(nèi)安裝Flash插件,在每次啟動(dòng)瀏覽器時(shí)也同時(shí)啟動(dòng)Flash插件,由于 Flash插件具有服務(wù)Service)功能,多個(gè)Flash插件之間可以相互調(diào)用。終端內(nèi)首次啟動(dòng)的瀏覽器與網(wǎng)站服務(wù)器建立Socket長(zhǎng)連接,后啟動(dòng)的瀏覽器不與網(wǎng)站服務(wù)器之間建立 Socket長(zhǎng)連接。將該首次啟動(dòng)的瀏覽器稱之為主瀏覽器,主瀏覽器中的Flash插件定義為主插件,后啟動(dòng)的瀏覽器稱之為從瀏覽器,從瀏覽器中的Flash插件定義為從插件。當(dāng)從瀏覽器需要與網(wǎng)站服務(wù)器之間進(jìn)行數(shù)據(jù)傳輸操作時(shí),該從瀏覽器內(nèi)的從 Flash插件調(diào)用主Flash插件,將從瀏覽器需要發(fā)送的消息通過調(diào)用插件的方式傳輸給主瀏覽器,由主瀏覽器通過Socket長(zhǎng)連接將該消息轉(zhuǎn)發(fā)給網(wǎng)站服務(wù)器;當(dāng)網(wǎng)站服務(wù)器通過Socket長(zhǎng)連接返回發(fā)送給從瀏覽器的消息時(shí),主Flash插件調(diào)用該從Flash插件,將網(wǎng)站服務(wù)器返回的消息發(fā)送給從瀏覽器。此時(shí),從瀏覽器通過主瀏覽器間接實(shí)現(xiàn)與網(wǎng)站服務(wù)器之間的Socket長(zhǎng)連接。通過上述安裝特定插件的方式,由插件之間相互調(diào)用實(shí)現(xiàn)瀏覽器之間的通信,進(jìn)而實(shí)現(xiàn)從瀏覽器與網(wǎng)站服務(wù)器之間間接的Socket長(zhǎng)連接,使得在終端內(nèi)啟動(dòng)多個(gè)瀏覽器的情況下,可以大大減少與網(wǎng)站服務(wù)器之間的Socket長(zhǎng)連接數(shù)量,克服了網(wǎng)站服務(wù)器為維護(hù)大量的Socket長(zhǎng)連接導(dǎo)致資源占用量大的問題。但是,該方案需要額外安裝插件,對(duì)終端能力有一定要求,如果終端能力不支持安裝的插件,則需要安裝特定的客戶端(如Flash Player)來運(yùn)行插件,否則將無法實(shí)現(xiàn)上述方案。若終端能力不支持特定的客戶端,則無法實(shí)現(xiàn)上述方案。另外,即使終端支持安裝的特定插件或是特定的客戶端,但是,額外安裝的插件和客戶端的安全性無法驗(yàn)證,威脅終端的安全性。
發(fā)明內(nèi)容
本申請(qǐng)實(shí)施例提供一種通過Socket連接進(jìn)行通信的方法、系統(tǒng)及設(shè)備,用以解決現(xiàn)有技術(shù)中存在額外安裝插件導(dǎo)致終端不支持以及降低終端安全性的問題。一種通過Socket連接進(jìn)行通信的方法,所述方法包括瀏覽器確定自身為主瀏覽器時(shí),建立與服務(wù)器之間的Socket連接,以及,在確定數(shù)據(jù)庫(kù)內(nèi)有已啟動(dòng)的各瀏覽器寫入的待發(fā)送消息時(shí),將所述待發(fā)送的消息通過Socket連接發(fā)送給服務(wù)器,并將服務(wù)器返回的消息寫入所述數(shù)據(jù)庫(kù);瀏覽器確定自身為從瀏覽器時(shí),將自身待發(fā)送給服務(wù)器的消息寫入數(shù)據(jù)庫(kù)中,并讀取數(shù)據(jù)庫(kù)中存儲(chǔ)的服務(wù)器返回的消息。一種通過Socket連接進(jìn)行通信的系統(tǒng),所述系統(tǒng)包括服務(wù)器以及在終端內(nèi)運(yùn)行的瀏覽器和瀏覽器內(nèi)嵌的數(shù)據(jù)庫(kù),其中所述瀏覽器,用于在確定自身為主瀏覽器時(shí),建立與服務(wù)器之間的Socket連接, 并在確定數(shù)據(jù)庫(kù)內(nèi)有已啟動(dòng)的在終端內(nèi)運(yùn)行的各瀏覽器寫入的待發(fā)送消息時(shí),將所述待發(fā)送的消息通過Socket連接發(fā)送給服務(wù)器,并將服務(wù)器返回的消息寫入所述數(shù)據(jù)庫(kù);在確定自身為從瀏覽器時(shí),將自身待發(fā)送給服務(wù)器的消息寫入數(shù)據(jù)庫(kù)中,并讀取數(shù)據(jù)庫(kù)中存儲(chǔ)的服務(wù)器返回的消息;所述服務(wù)器,用于與瀏覽器建立Socket連接,并接收瀏覽器通過Socket連接發(fā)送的消息,以及,通過Socket連接向?yàn)g覽器返回消息。一種瀏覽器,應(yīng)用于終端內(nèi),所述瀏覽器包括第一執(zhí)行模塊,用于在確定所述瀏覽器為主瀏覽器時(shí),建立與服務(wù)器之間的 Socket連接,并在確定終端內(nèi)運(yùn)行的數(shù)據(jù)庫(kù)內(nèi)有已啟動(dòng)的各瀏覽器寫入的待發(fā)送消息時(shí), 將所述待發(fā)送的消息通過Socket連接發(fā)送給服務(wù)器,并將服務(wù)器返回的消息寫入所述數(shù)據(jù)庫(kù);第二執(zhí)行模塊,用于在確定所述瀏覽器為從瀏覽器時(shí),將自身待發(fā)送給服務(wù)器的消息寫入數(shù)據(jù)庫(kù)中,并讀取數(shù)據(jù)庫(kù)中存儲(chǔ)的服務(wù)器返回的消息。本申請(qǐng)有益效果如下本申請(qǐng)實(shí)施例在終端內(nèi)建立各瀏覽器都能夠訪問的數(shù)據(jù)庫(kù),以便于在終端內(nèi)啟動(dòng)多個(gè)瀏覽器時(shí),未與服務(wù)器建立Socket連接的從瀏覽器將發(fā)送給服務(wù)器的消息寫入數(shù)據(jù)庫(kù)中,由與服務(wù)器建立Socket連接的主瀏覽器將該消息通過自身建立的Socket連接發(fā)送至服務(wù)器,同時(shí)將服務(wù)器返回的消息也寫入數(shù)據(jù)庫(kù)中,由從瀏覽器讀取服務(wù)器返回的消息, 使得從瀏覽器可以間接地通過主瀏覽器的Socket連接與網(wǎng)站服務(wù)器之間的通信,實(shí)現(xiàn)了多個(gè)瀏覽器之間共享Socket連接,且該通信過程不需要在瀏覽器內(nèi)額外安裝插件,避免了由于終端能力不足以支持插件而無法實(shí)現(xiàn)共享Socket連接的問題,同時(shí)由于不需要安裝插件,也消除了額外安裝插件所帶來的安全隱患。
圖1為本申請(qǐng)實(shí)施例方案所應(yīng)用的場(chǎng)景示意圖;圖2為本申請(qǐng)實(shí)施例一中通過Socket連接進(jìn)行通信的方法示意圖;圖3為本申請(qǐng)實(shí)施例三中通過Socket連接進(jìn)行通信的系統(tǒng)結(jié)構(gòu)示意圖;圖4為本申請(qǐng)實(shí)施例四中瀏覽器結(jié)構(gòu)示意圖。
具體實(shí)施例方式為了實(shí)現(xiàn)本申請(qǐng)目的,本申請(qǐng)實(shí)施例提出通過調(diào)用超文本標(biāo)記語言5 (HTML5)中的基于瀏覽器數(shù)據(jù)接口的技術(shù)(WebSQL API),在終端建立各瀏覽器都能夠訪問的數(shù)據(jù)庫(kù), 以便于在終端內(nèi)啟動(dòng)多個(gè)瀏覽器時(shí),未與網(wǎng)站服務(wù)器建立Socket連接的從瀏覽器將發(fā)送給網(wǎng)站服務(wù)器的消息寫入數(shù)據(jù)庫(kù)中,由與網(wǎng)站服務(wù)器建立Socket連接的主瀏覽器不斷掃描數(shù)據(jù)庫(kù),當(dāng)發(fā)現(xiàn)有需要發(fā)送給網(wǎng)站服務(wù)器的消息時(shí),將該消息通過自身建立的Socket連接發(fā)送至網(wǎng)站服務(wù)器,同時(shí)將網(wǎng)站服務(wù)器返回的消息也寫入數(shù)據(jù)庫(kù)中,由從瀏覽器讀取網(wǎng)站服務(wù)器返回的消息,因此從瀏覽器可以間接地通過主瀏覽器的Socket連接與網(wǎng)站服務(wù)器之間通信,實(shí)現(xiàn)了多個(gè)瀏覽器之間共享Socket連接,且該通信過程不需要在瀏覽器內(nèi)額外安裝插件,避免了由于終端能力不足以支持插件而無法實(shí)現(xiàn)共享Socket連接的問題,同時(shí)由于不需要安裝插件,也消除了額外安裝插件所帶來的安全隱患。所述WebSQL是HTML5規(guī)范中的子規(guī)范,用于描述如何建立終端內(nèi)的用來保存離線信息的數(shù)據(jù)庫(kù),還描述了如何使用Javascript對(duì)該數(shù)據(jù)庫(kù)進(jìn)行寫入、讀出、修改、查找、建庫(kù)、建數(shù)據(jù)庫(kù)內(nèi)數(shù)據(jù)表的操作。需要說明的是,本申請(qǐng)實(shí)施例中的數(shù)據(jù)庫(kù)可以通過調(diào)用HTML5中的WebSQL API來建立,但也不限于通過其他方式建立數(shù)據(jù)庫(kù),使得建立的數(shù)據(jù)庫(kù)能夠被所有的瀏覽器進(jìn)行讀寫操作。本申請(qǐng)實(shí)施例方案可以應(yīng)用在用戶操作終端內(nèi)的瀏覽器與網(wǎng)站服務(wù)器之間進(jìn)行消息傳輸?shù)膱?chǎng)景,如圖1所示,為本申請(qǐng)實(shí)施例方案所應(yīng)用的場(chǎng)景示意圖,在終端內(nèi)啟動(dòng)并運(yùn)行多個(gè)瀏覽器,且在終端的一段存儲(chǔ)空間內(nèi)開辟建立數(shù)據(jù)庫(kù),各瀏覽器可以對(duì)該數(shù)據(jù)庫(kù)進(jìn)行讀寫操作;同時(shí),主瀏覽器與網(wǎng)站服務(wù)器之間建立Socket連接,從瀏覽器未與網(wǎng)站服務(wù)器之間建立Socket連接。從瀏覽器將希望發(fā)送給網(wǎng)站服務(wù)器的消息寫入數(shù)據(jù)庫(kù),由主瀏覽器掃描到寫入新消息的事件后,將該消息讀出并轉(zhuǎn)發(fā)給網(wǎng)站服務(wù)器,并將網(wǎng)站服務(wù)器返回的消息寫入數(shù)據(jù)庫(kù)中,由從瀏覽器主動(dòng)讀取網(wǎng)站服務(wù)器返回的消息。從圖1的結(jié)構(gòu)中可以看出,由于瀏覽器內(nèi)沒有安裝特定插件,主從瀏覽器之間并沒有直接通信,而是通過共同
6讀寫的數(shù)據(jù)庫(kù)進(jìn)行消息傳輸,再由主瀏覽器為從瀏覽器與網(wǎng)站服務(wù)器之間進(jìn)行Socket傳輸,主從瀏覽器之間共享主瀏覽器與網(wǎng)站服務(wù)器之間的Socket連接。下面對(duì)圖1中的各部件以及部件之間的連接關(guān)系進(jìn)行說明。根據(jù)數(shù)據(jù)庫(kù)建立的方式不同,本申請(qǐng)各實(shí)施例中涉及的瀏覽器是能夠支持建立數(shù)據(jù)庫(kù)的規(guī)范的瀏覽器。例如若是通過調(diào)用HTML5中的WebSQL API在終端內(nèi)建立數(shù)據(jù)庫(kù), 則本申請(qǐng)各實(shí)施例中涉及的瀏覽器是能夠支持HTML5規(guī)范的瀏覽器。本申請(qǐng)各實(shí)施例中涉及的數(shù)據(jù)庫(kù)可以是在終端的磁盤空間內(nèi)開辟的存儲(chǔ)區(qū)域,該數(shù)據(jù)庫(kù)可以是靜態(tài)建立的數(shù)據(jù)庫(kù)或動(dòng)態(tài)建立的數(shù)據(jù)庫(kù),所述靜態(tài)建立是指在有瀏覽器啟動(dòng)(即需要使用該數(shù)據(jù)庫(kù))時(shí),通過瀏覽器的Javascript連接該數(shù)據(jù)庫(kù),在所有的瀏覽器都退出(即不需要使用該數(shù)據(jù)庫(kù))時(shí),通過瀏覽器的Javascript去斷開與該數(shù)據(jù)庫(kù)的連接,通過調(diào)用HTML5中的WebSQLAPI在終端內(nèi)建立的數(shù)據(jù)庫(kù)的資源不因去激活而釋放。所述動(dòng)態(tài)建立是指在有瀏覽器啟動(dòng)時(shí),通過瀏覽器的Javascript調(diào)用HTML5中的W^ebSQLAPI 在終端內(nèi)建立的數(shù)據(jù)庫(kù),在所有的瀏覽器都退出時(shí),釋放建立的數(shù)據(jù)庫(kù)資源。本申請(qǐng)各實(shí)施例中涉及的Socket連接可以是根據(jù)HTML5規(guī)范中的WebSocket子規(guī)范的描述,通過Javascript建立了瀏覽器與服務(wù)器之間的Socket長(zhǎng)連接,用于實(shí)現(xiàn)瀏覽器與服務(wù)器之間的通信。本申請(qǐng)各實(shí)施例中的主瀏覽器和從瀏覽器可以是根據(jù)HTML5規(guī)范中的Workers子規(guī)范的描述,通過Javascript產(chǎn)生和控制在數(shù)據(jù)庫(kù)中讀寫的線程。本申請(qǐng)各實(shí)施例中涉及的終端可以具有網(wǎng)絡(luò)通信能力且安裝有瀏覽器的設(shè)備,如電腦、手機(jī)等。下面結(jié)合說明書附圖對(duì)本申請(qǐng)各實(shí)施例進(jìn)行詳細(xì)描述。實(shí)施例一如圖2所示,為本申請(qǐng)實(shí)施例一中通過Socket連接進(jìn)行通信的方法,所述方法包括以下步驟步驟101 瀏覽器檢測(cè)自身的狀態(tài),確定自身為主瀏覽器或從瀏覽器,若為主瀏覽器,則執(zhí)行步驟102 ;否則,執(zhí)行步驟106。當(dāng)終端首次啟動(dòng)瀏覽器時(shí)(即該瀏覽器啟動(dòng)時(shí),不存在其他處于運(yùn)行狀態(tài)的瀏覽器),該瀏覽器通過HTTP連接,從服務(wù)器下載Javascript腳本,并通過該Javascript腳本調(diào)用HTML5中的WebSQL API來建立數(shù)據(jù)庫(kù)。若建立的數(shù)據(jù)庫(kù)是靜態(tài)建立的數(shù)據(jù)庫(kù),則通過該Javascript激活數(shù)據(jù)庫(kù),若建立的數(shù)據(jù)庫(kù)是動(dòng)態(tài)建立的數(shù)據(jù)庫(kù),則通過該Javascript請(qǐng)求為數(shù)據(jù)庫(kù)分配資源,建立數(shù)據(jù)庫(kù)。當(dāng)終端的某一瀏覽器啟動(dòng)時(shí),已有其他瀏覽器啟動(dòng)并處于運(yùn)行狀態(tài)時(shí),則該瀏覽器通過HTTP連接,從服務(wù)器下載Javascript腳本,并通過該Javascript腳本向數(shù)據(jù)庫(kù)寫入或讀出數(shù)據(jù)。針對(duì)某一瀏覽器A,確定自身為主瀏覽器或從瀏覽器的具體方式為瀏覽器A在啟動(dòng)時(shí),讀取數(shù)據(jù)庫(kù)中維護(hù)的注冊(cè)表,該注冊(cè)表中記錄了已啟動(dòng)的其他各瀏覽器自身為主瀏覽器或從瀏覽器的注冊(cè)信息。當(dāng)前啟動(dòng)的瀏覽器A判斷注冊(cè)表中已在數(shù)據(jù)庫(kù)中注冊(cè)的處于運(yùn)行狀態(tài)的主瀏覽器的數(shù)量是否小于設(shè)定門限值,若是,則確定瀏覽器A為主瀏覽器;否則,確定瀏覽器A為從瀏覽器。
在本實(shí)施例一的方案中,用于判斷瀏覽器是否為主瀏覽器的所述門限值為正整數(shù),即終端內(nèi)已啟動(dòng)的瀏覽器中可以只有一個(gè)主瀏覽器,也可以有多個(gè)主瀏覽器,該門限值的實(shí)際取值可以根據(jù)服務(wù)器的Socket連接的維護(hù)能力和啟動(dòng)的瀏覽器數(shù)量確定,這是因?yàn)橐环矫?,由于主瀏覽器要與服務(wù)器之間建立Socket連接,若主瀏覽器的數(shù)量過多,則服務(wù)器需要維護(hù)的Socket連接數(shù)量也較多,可能造成服務(wù)器負(fù)擔(dān)過大的問題;另一方面,主瀏覽器建立的Socket連接要共享給從瀏覽器,若主瀏覽器的數(shù)量過少,而啟動(dòng)的瀏覽器數(shù)量較多(即從瀏覽器的數(shù)量較多),則主瀏覽器可能無法及時(shí)響應(yīng)從瀏覽器與服務(wù)器之間的消息傳輸,導(dǎo)致需要傳輸?shù)南⒀舆t的問題。因此,需要綜合考慮服務(wù)器的 Socket連接的維護(hù)能力和啟動(dòng)的瀏覽器數(shù)量來確定主瀏覽器的數(shù)量,如設(shè)定主瀏覽器和從瀏覽器的數(shù)量之比為1 1 1 3。瀏覽器在確定自身為主瀏覽器或從瀏覽器后,通過該Jav必cript腳本將自身為主瀏覽器或從瀏覽器的信息寫入注冊(cè)表中,同時(shí)寫入的還有自身的標(biāo)識(shí)。瀏覽器將自身的信息寫入注冊(cè)表的過程可以看作是瀏覽器在數(shù)據(jù)庫(kù)中注冊(cè)的過程。需要說明的是,瀏覽器自身的標(biāo)識(shí)是用于唯一表示該瀏覽器的標(biāo)識(shí),可以通過 Javascript腳本來生成,具體使用的算法包括但不限于Javascript腳本可用的各種標(biāo)識(shí)生成算法。通過步驟101的方案,終端內(nèi)每次啟動(dòng)的瀏覽器確定自身是主瀏覽器或是從瀏覽器,并在數(shù)據(jù)庫(kù)中注冊(cè),后續(xù),瀏覽器可以根據(jù)自身的狀態(tài)進(jìn)行相應(yīng)的操作。步驟102 瀏覽器確定自身為主瀏覽器時(shí),建立與網(wǎng)站服務(wù)器之間的Socket連接。步驟103 主瀏覽器實(shí)時(shí)掃描數(shù)據(jù)庫(kù)內(nèi)是否有待發(fā)送的消息,若有,則執(zhí)行步驟 104 ;否則,繼續(xù)掃描。在本實(shí)施例一的方案中,數(shù)據(jù)庫(kù)中除了維護(hù)有注冊(cè)表外,還維護(hù)任務(wù)隊(duì)列表,該任務(wù)隊(duì)列表中的每一條信息記錄一項(xiàng)任務(wù)的相關(guān)信息,包括發(fā)起該任務(wù)的瀏覽器的標(biāo)識(shí)、該瀏覽器為本次任務(wù)分配的業(yè)務(wù)標(biāo)識(shí)、本次任務(wù)的執(zhí)行狀態(tài)、本次任務(wù)待發(fā)送消息的消息體以及任務(wù)創(chuàng)建時(shí)間等。主瀏覽器通過HTML5規(guī)范中的Workers子規(guī)范實(shí)現(xiàn)后臺(tái)Javascript腳本輪詢查看任務(wù)隊(duì)列表,判斷是否有待發(fā)送的消息。若終端內(nèi)存在多個(gè)主瀏覽器,由于每一主瀏覽器都實(shí)時(shí)掃描任務(wù)隊(duì)列表中的信息,可能出現(xiàn)同一消息被多個(gè)主瀏覽器發(fā)送的情形。為了克服該問題,本實(shí)施例中將任務(wù)隊(duì)列表進(jìn)行擴(kuò)展,要求執(zhí)行任務(wù)的瀏覽器除了要在任務(wù)隊(duì)列表中記錄一項(xiàng)任務(wù)的上述相關(guān)信息,還記錄從瀏覽器選擇的用于發(fā)送該消息的主瀏覽器的標(biāo)識(shí),由該主瀏覽器的標(biāo)識(shí)對(duì)應(yīng)的主瀏覽器發(fā)送該消息。從瀏覽器選擇用于發(fā)送消息的主瀏覽器可以有多種方式,包括但不限于從瀏覽器隨機(jī)從多個(gè)主瀏覽器中選擇一個(gè)用于發(fā)送消息的主瀏覽器;或者,從瀏覽器按照任務(wù)均衡的原則,查看每一主瀏覽器被幾個(gè)從瀏覽器選擇用于發(fā)送消息,選擇需要承載的從瀏覽器的任務(wù)較少的主瀏覽器,使得各主瀏覽器發(fā)送消息的任務(wù)相對(duì)均衡。終端內(nèi)只有一個(gè)主瀏覽器的情況可以看作是多主瀏覽器的特例,在只有一個(gè)主瀏覽器的情況下,任一從瀏覽器選擇該唯一的主瀏覽器用于發(fā)送消息。
若終端內(nèi)當(dāng)前只有一個(gè)主瀏覽器,但存在多個(gè)任務(wù)(即多個(gè)待發(fā)送的消息),則主瀏覽器根據(jù)任務(wù)創(chuàng)建時(shí)間的先后順序,依次發(fā)送所述待發(fā)送的消息。步驟104 主瀏覽器將所述待發(fā)送的消息通過Socket連接發(fā)送給服務(wù)器,并跳轉(zhuǎn)至步驟103。當(dāng)主瀏覽器向服務(wù)器發(fā)送消息之后,可以不必等待服務(wù)器返回的消息,而是返回步驟103,繼續(xù)掃描是否有待發(fā)送的消息。步驟105 當(dāng)主瀏覽器接收到服務(wù)器返回的消息時(shí),將該消息寫入數(shù)據(jù)庫(kù)中,并跳轉(zhuǎn)至步驟103。主瀏覽器可以在步驟102之后的任意時(shí)刻接收到服務(wù)器返回的消息,執(zhí)行本步驟,將服務(wù)器返回的消息寫入數(shù)據(jù)庫(kù)中。數(shù)據(jù)庫(kù)中可以維護(hù)回應(yīng)接收隊(duì)列表,主瀏覽器可以將每次接收到服務(wù)器返回的消息寫入回應(yīng)接收隊(duì)列表中,該回應(yīng)接收隊(duì)列表中的每一條信息記錄一條服務(wù)器返回消息的相關(guān)信息,包括返回的消息所屬瀏覽器的標(biāo)識(shí)、所屬瀏覽器為本次接收消息的任務(wù)分配的業(yè)務(wù)標(biāo)識(shí)以及消息的消息體等。需要說明的是,針對(duì)步驟103中任務(wù)隊(duì)列表中的一項(xiàng)任務(wù),該任務(wù)的相關(guān)信息記錄了待發(fā)送消息的消息體、所屬瀏覽器的標(biāo)識(shí)以及瀏覽器為本次任務(wù)分配的業(yè)務(wù)標(biāo)識(shí),因此,當(dāng)服務(wù)器返回針對(duì)該項(xiàng)任務(wù)的消息后,服務(wù)器返回的消息中也同樣有所屬瀏覽器的標(biāo)識(shí)、所屬瀏覽器為本次接收消息的任務(wù)分配的業(yè)務(wù)標(biāo)識(shí)以及消息的消息體等。針對(duì)同一任務(wù)向服務(wù)器發(fā)送消息和接收服務(wù)器返回消息的主瀏覽器可以是同一主瀏覽器,也可以是不同的兩個(gè)主瀏覽器分別執(zhí)行的。步驟106 從瀏覽器將自身待發(fā)送給網(wǎng)站服務(wù)器的消息寫入數(shù)據(jù)庫(kù)中。從瀏覽器向任務(wù)隊(duì)列表中寫入一項(xiàng)任務(wù)的相關(guān)信息,該相關(guān)信息包括自身的標(biāo)識(shí)、為本次任務(wù)分配的業(yè)務(wù)標(biāo)識(shí)、本次任務(wù)的執(zhí)行狀態(tài)、本次任務(wù)待發(fā)送消息的消息體以及任務(wù)創(chuàng)建時(shí)間等,進(jìn)一步地,還可以包括從瀏覽器選擇的用于發(fā)送消息的主瀏覽器的標(biāo)識(shí)。針對(duì)從瀏覽器待發(fā)送的消息,由從瀏覽器在任務(wù)隊(duì)列表記錄一項(xiàng)任務(wù)的相關(guān)信息后,再由主瀏覽器發(fā)送。針對(duì)主瀏覽器待發(fā)送的消息,可以有以下兩種發(fā)送方式第一種方式主瀏覽器待發(fā)送給服務(wù)器的消息不需要寫入數(shù)據(jù)庫(kù)的任務(wù)隊(duì)列表中,由主瀏覽器自身通過Socket連接直接發(fā)送給服務(wù)器,且服務(wù)器返回給該主瀏覽器的消息也不需要寫入數(shù)據(jù)庫(kù)中,而是由該主瀏覽器直接接收。第二種方式主瀏覽器待發(fā)送的消息不是直接通過Socket連接發(fā)送給服務(wù)器,而是先將待發(fā)送的消息寫入數(shù)據(jù)庫(kù)的任務(wù)隊(duì)列表中,作為任務(wù)隊(duì)列表中的一項(xiàng)任務(wù)。例如主瀏覽器A將自身待發(fā)送的消息寫入任務(wù)隊(duì)列表,由終端內(nèi)的任一主瀏覽器(可以是主瀏覽器A或是其他主瀏覽器)掃描任務(wù)隊(duì)列表后,將主瀏覽器A寫入的所述待發(fā)送的消息發(fā)送給服務(wù)器,例如由主瀏覽器B將主瀏覽器A寫入任務(wù)隊(duì)列表的消息通過Socket連接發(fā)送給服務(wù)器。服務(wù)器返回給主瀏覽器A的消息也由終端內(nèi)的任一主瀏覽器(如主瀏覽器B) 接收后寫入數(shù)據(jù)庫(kù)中,主瀏覽器A實(shí)時(shí)掃描出服務(wù)器返回給自身的消息。本步驟是在從瀏覽器和主瀏覽器需要向服務(wù)器發(fā)送消息時(shí)執(zhí)行。步驟107 從瀏覽器讀取數(shù)據(jù)庫(kù)中存儲(chǔ)的網(wǎng)站服務(wù)器返回的消息。時(shí)掃描回應(yīng)接收隊(duì)列表,查看回應(yīng)接收隊(duì)列表是否有服務(wù)器返回給自身的消息,若有,則讀取該消息;否則,繼續(xù)掃描。本步驟可以是在主瀏覽器和從瀏覽器運(yùn)行過程中實(shí)時(shí)執(zhí)行,避免漏收服務(wù)器返回的消息。上述步驟101 步驟107的方案是針對(duì)某一瀏覽器是主瀏覽器或從瀏覽器的情況下需要執(zhí)行的操作,在實(shí)際共享Socket連接的通信過程中,同時(shí)存在主瀏覽器和從瀏覽器,主從瀏覽器根據(jù)上述步驟的內(nèi)容各自運(yùn)行,在運(yùn)行過程中,步驟103 步驟107的順序根據(jù)實(shí)際情況而不限定為本實(shí)施例一中的順序。在上述實(shí)施例一的方案中,每一瀏覽器在啟動(dòng)后都需要確定自身為主瀏覽器或是從瀏覽器,并根據(jù)自身的狀態(tài)執(zhí)行相應(yīng)的操作。但從瀏覽器的狀態(tài)是可以變化的,具體的變化過程根據(jù)主瀏覽器是否正常退出的不同而不同,下面具體加以說明。假設(shè)當(dāng)前終端內(nèi)有至少一個(gè)主瀏覽器以及至少一個(gè)從瀏覽器,且主瀏覽器的數(shù)量已達(dá)到步驟101中涉及的門限值。針對(duì)主瀏覽器是否正常退出的情況,從瀏覽器的狀態(tài)是否改變的情況如下1、有一個(gè)主瀏覽器正常退出,該主瀏覽器將自身退出的信息寫入注冊(cè)表后退出。若此時(shí)有新的瀏覽器啟動(dòng),則由于有主瀏覽器退出,當(dāng)前處于運(yùn)行狀態(tài)的主瀏覽器的數(shù)量未達(dá)到門限值,則新啟動(dòng)的瀏覽器將作為主瀏覽器。若此時(shí)沒有新的瀏覽器啟動(dòng),且也沒有從瀏覽器有發(fā)送消息的業(yè)務(wù),則從瀏覽器的狀態(tài)不改變。若此時(shí)沒有新的瀏覽器啟動(dòng),而從瀏覽器有發(fā)送消息的任務(wù),則該從瀏覽器從任務(wù)創(chuàng)建時(shí)間開始啟動(dòng)定時(shí)器,檢測(cè)消息是否在第一時(shí)長(zhǎng)內(nèi)發(fā)送出去;如果消息在第一時(shí)長(zhǎng)內(nèi)發(fā)送,表示當(dāng)前運(yùn)行的主瀏覽器的數(shù)量雖然未達(dá)到門限值,但已能夠滿足共享Socket連接的需求,則從瀏覽器的狀態(tài)不改變。如果消息在第一時(shí)長(zhǎng)內(nèi)未發(fā)送,表示當(dāng)前運(yùn)行的主瀏覽器不能夠滿足共享Socket連接的需求,從瀏覽器查看注冊(cè)表中當(dāng)前處于運(yùn)行狀態(tài)的主瀏覽器的數(shù)量,發(fā)現(xiàn)主瀏覽器的數(shù)量小于所述門限值,則將自身的狀態(tài)改為主瀏覽器,同時(shí)將自身的狀態(tài)由從瀏覽器轉(zhuǎn)變?yōu)橹鳛g覽器的信息寫入注冊(cè)表中。2、有一個(gè)主瀏覽器非正常退出,該主瀏覽器在退出時(shí)沒有在注冊(cè)表寫明退出的信肩、ο若此時(shí)有新的瀏覽器啟動(dòng),則由于當(dāng)前注冊(cè)表中記錄的主瀏覽器的數(shù)量仍不小于門限值,則新啟動(dòng)的瀏覽器將作為從瀏覽器。若此時(shí)沒有新的瀏覽器啟動(dòng),且也沒有從瀏覽器有發(fā)送消息的業(yè)務(wù),則從瀏覽器的狀態(tài)不改變。若此時(shí)沒有新的瀏覽器啟動(dòng),而從瀏覽器有發(fā)送消息的任務(wù),則該從瀏覽器檢測(cè)消息是否在第一時(shí)長(zhǎng)內(nèi)發(fā)送;如果消息在第一時(shí)長(zhǎng)內(nèi)發(fā)送,表示當(dāng)前運(yùn)行的主瀏覽器能夠滿足共享Socket連接的需求,從瀏覽器的狀態(tài)不改變。如果消息在第一時(shí)長(zhǎng)內(nèi)未發(fā)送,表示當(dāng)前運(yùn)行的主瀏覽器不能夠滿足共享Socket連接的需求,從瀏覽器查看注冊(cè)表中主瀏覽器的數(shù)量。由于已退出的主瀏覽器是非正常退出的,注冊(cè)表中沒有該主瀏覽器的退出信息,則注冊(cè)表中顯示的處于運(yùn)行狀態(tài)的主瀏覽器數(shù)量不小于門限值。從瀏覽器則進(jìn)一步判斷消息是否在第二時(shí)長(zhǎng)(第二時(shí)長(zhǎng)大于第一時(shí)長(zhǎng),該第二時(shí)長(zhǎng)可認(rèn)為是從瀏覽器待發(fā)送的
10消息所能容忍的最大時(shí)延)內(nèi)發(fā)送,若是,則從瀏覽器的狀態(tài)不改變,否則,表示主瀏覽器的門限值設(shè)置過少,從瀏覽器將自身的狀態(tài)改為主瀏覽器,同時(shí)將自身的狀態(tài)由從瀏覽器轉(zhuǎn)變?yōu)橹鳛g覽器的信息寫入注冊(cè)表中。通過上述步驟101 步驟107的方案,在主從瀏覽器共享Socket連接減少Socket 的連接數(shù)量,減少服務(wù)器維護(hù)Socket連接壓力的情況下,無需在終端內(nèi)安裝插件或是運(yùn)行插件的特定客戶端,降低了對(duì)終端的能力要求,使得能力較低的終端也能夠通過本申請(qǐng)方案實(shí)現(xiàn)減少服務(wù)器維護(hù)Socket連接壓力的目的;且由于不需要安裝插件,也消除了額外安裝插件所帶來的安全隱患。實(shí)施例二 本申請(qǐng)實(shí)施例二通過一個(gè)具體的實(shí)例來說明實(shí)施例一的方案。假設(shè)本申請(qǐng)實(shí)施例二中主瀏覽器的數(shù)量為1,不論主從瀏覽器,待發(fā)送的消息和服務(wù)器返回的消息都存儲(chǔ)在數(shù)據(jù)庫(kù)中。實(shí)施例二的方案包括以下步驟第一步啟動(dòng)瀏覽器1,瀏覽器1通過HTTP連接從服務(wù)器下載頁面和Javascript 腳本。第二步瀏覽器1確定當(dāng)前不存在其他已啟動(dòng)的瀏覽器,則通過Javascript腳本調(diào)用HTML5規(guī)范中的WebSQLAPI在終端內(nèi)建立數(shù)據(jù)庫(kù)。第三步瀏覽器1確定自身為主瀏覽器,并在數(shù)據(jù)庫(kù)中的注冊(cè)表中進(jìn)行注冊(cè)。所述注冊(cè)表如表1所示,注冊(cè)表中的每一條信息為一個(gè)瀏覽器的注冊(cè)內(nèi)容,包括 瀏覽器的標(biāo)識(shí)(IE_ID)以及表示該瀏覽器是主瀏覽器或從瀏覽器的令牌(IS_H0ST),令牌值為0,表示該瀏覽器為主瀏覽器,令牌值為1,表示該瀏覽器為從瀏覽器。從表1中可以看出,瀏覽器1的標(biāo)識(shí)為0001,令牌值為0。
注冊(cè)表瀏覽器1IEJD/Char ( 10)IS_HOST ( Bit)00010表 1第四步當(dāng)有瀏覽器2、瀏覽器3啟動(dòng)時(shí),也通過HTTP連接從服務(wù)器下載頁面和 Javascript Ρ*。第五步瀏覽器2通過Javascript腳本讀取注冊(cè)表,發(fā)現(xiàn)其中標(biāo)識(shí)為0001的瀏覽器令牌值為0,是主瀏覽器。由于終端內(nèi)主瀏覽器的最大數(shù)量為1,則瀏覽器2確定自身為從瀏覽器;瀏覽器3執(zhí)行與瀏覽器2的相同操作。第六步瀏覽器2、瀏覽器3在注冊(cè)表中注冊(cè)。在瀏覽器2、瀏覽器3注冊(cè)后,表1中的注冊(cè)表改為表2所示。
1權(quán)利要求
1.一種通過套接字Socket連接進(jìn)行通信的方法,其特征在于,所述方法包括瀏覽器確定自身為主瀏覽器時(shí),建立與服務(wù)器之間的Socket連接,以及,在確定數(shù)據(jù)庫(kù)內(nèi)有已啟動(dòng)的從瀏覽器寫入的待發(fā)送消息時(shí),將所述待發(fā)送的消息通過Socket連接發(fā)送給服務(wù)器,并將服務(wù)器返回的消息寫入所述數(shù)據(jù)庫(kù);瀏覽器確定自身為從瀏覽器時(shí),將自身待發(fā)送給服務(wù)器的消息寫入數(shù)據(jù)庫(kù)中,并讀取數(shù)據(jù)庫(kù)中存儲(chǔ)的服務(wù)器返回的消息。
2.如權(quán)利要求1所述的方法,其特征在于,所述瀏覽器是支持HTML5規(guī)范的瀏覽器,所述數(shù)據(jù)庫(kù)是依照HTML5規(guī)范中的WebSQL子規(guī)范,在首次啟動(dòng)瀏覽器時(shí)建立的。
3.如權(quán)利要求1所述的方法,其特征在于,所述方法還包括主瀏覽器將自身待發(fā)送給服務(wù)器的消息通過Socket連接直接發(fā)送給服務(wù)器,并直接接收服務(wù)器返回給該主瀏覽器的消息;或者主瀏覽器將自身待發(fā)送給服務(wù)器的消息寫入數(shù)據(jù)庫(kù)中,由當(dāng)前處于運(yùn)行狀態(tài)的一個(gè)主瀏覽器將該消息發(fā)送給服務(wù)器,并讀取數(shù)據(jù)庫(kù)中存儲(chǔ)的服務(wù)器返回給自身的消息。
4.如權(quán)利要求1所述的方法,其特征在于,所述方法還包括瀏覽器通過超文本傳輸協(xié)議HTTP連接從服務(wù)器內(nèi)下載客戶端腳本語言JavMcript腳本,并通過該JavMcript腳本將自身為主瀏覽器或從瀏覽器的信息注冊(cè)在數(shù)據(jù)庫(kù)中。
5.如權(quán)利要求4所述的方法,其特征在于,瀏覽器通過以下方式確定自身為主瀏覽器或從瀏覽器瀏覽器在啟動(dòng)時(shí),從數(shù)據(jù)庫(kù)中已啟動(dòng)的其他瀏覽器的注冊(cè)信息,判斷已在數(shù)據(jù)庫(kù)中注冊(cè)的處于運(yùn)行狀態(tài)的主瀏覽器數(shù)量是否小于設(shè)定門限值;若是,則確定自身為主瀏覽器; 否則,確定自身為從瀏覽器,所述設(shè)定的門限值為正整數(shù)。
6.如權(quán)利要求5所述的方法,其特征在于,所述方法還包括從瀏覽器在運(yùn)行過程中,檢測(cè)自身待發(fā)送的消息是否在第一時(shí)長(zhǎng)內(nèi)發(fā)送,若未在第一時(shí)長(zhǎng)內(nèi)發(fā)送,則重新確定已在數(shù)據(jù)庫(kù)中注冊(cè)的處于運(yùn)行狀態(tài)的主瀏覽器數(shù)量;若重新確定的主瀏覽器數(shù)量小于設(shè)定門限值,則將自身的狀態(tài)由從瀏覽器改變?yōu)橹鳛g覽器,并重新在數(shù)據(jù)庫(kù)中注冊(cè);否則,檢測(cè)所述待發(fā)送的消息是否在第二時(shí)長(zhǎng)內(nèi)發(fā)送,若未在第二時(shí)長(zhǎng)內(nèi)發(fā)送,則將自身的狀態(tài)由從瀏覽器改變?yōu)橹鳛g覽器,并重新在數(shù)據(jù)庫(kù)中注冊(cè);所述第二時(shí)長(zhǎng)大于第一時(shí)長(zhǎng)。
7.如權(quán)利要求5所述的方法,其特征在于,在所述設(shè)定門限值大于1時(shí),從瀏覽器將自身待發(fā)送給服務(wù)器的消息寫入數(shù)據(jù)庫(kù)中,具體包括從瀏覽器將待發(fā)送消息的消息體、該從瀏覽器的標(biāo)識(shí)、待發(fā)送消息的狀態(tài)、發(fā)送該消息的業(yè)務(wù)標(biāo)識(shí)以及從瀏覽器選擇的用于發(fā)送該消息的主瀏覽器的標(biāo)識(shí)寫入數(shù)據(jù)庫(kù)中。
8.如權(quán)利要求7所述的方法,其特征在于,主瀏覽器將待發(fā)送的消息通過Socket連接發(fā)送給服務(wù)器,具體包括主瀏覽器確定待發(fā)送消息的狀態(tài)為第一狀態(tài)時(shí),將待發(fā)送消息的消息體通過Socket 連接發(fā)送給服務(wù)器,并將待發(fā)送消息的狀態(tài)更新為第二狀態(tài);主瀏覽器將服務(wù)器返回的消息寫入數(shù)據(jù)庫(kù)中,具體包括主瀏覽器將服務(wù)器返回的消息的業(yè)務(wù)標(biāo)識(shí)、所屬瀏覽器的標(biāo)識(shí)和消息體寫入數(shù)據(jù)庫(kù)中;從瀏覽器讀取數(shù)據(jù)庫(kù)中存儲(chǔ)的服務(wù)器返回的消息,具體包括從瀏覽器讀取數(shù)據(jù)庫(kù)中存儲(chǔ)的服務(wù)器返回的消息中,所屬瀏覽器的標(biāo)識(shí)為自身標(biāo)識(shí)的消息。
9.一種通過套接字Socket連接進(jìn)行通信的系統(tǒng),其特征在于,所述系統(tǒng)包括服務(wù)器以及在終端內(nèi)運(yùn)行的瀏覽器和瀏覽器內(nèi)嵌的數(shù)據(jù)庫(kù),其中所述瀏覽器,用于在確定自身為主瀏覽器時(shí),建立與服務(wù)器之間的Socket連接,并在確定數(shù)據(jù)庫(kù)內(nèi)有已啟動(dòng)的在終端內(nèi)運(yùn)行的各瀏覽器寫入的待發(fā)送消息時(shí),將所述待發(fā)送的消息通過Socket連接發(fā)送給服務(wù)器,并將服務(wù)器返回的消息寫入所述數(shù)據(jù)庫(kù);在確定自身為從瀏覽器時(shí),將自身待發(fā)送給服務(wù)器的消息寫入數(shù)據(jù)庫(kù)中,并讀取數(shù)據(jù)庫(kù)中存儲(chǔ)的服務(wù)器返回的消息;所述服務(wù)器,用于與瀏覽器建立Socket連接,并接收瀏覽器通過Socket連接發(fā)送的消息,以及,通過Socket連接向?yàn)g覽器返回消息。
10.如權(quán)利要求9所述的系統(tǒng),其特征在于,所述瀏覽器,還用于在為主瀏覽器時(shí),將自身待發(fā)送給服務(wù)器的消息通過Socket連接直接發(fā)送給服務(wù)器,并直接接收服務(wù)器返回給該主瀏覽器的消息,或者,將自身待發(fā)送給服務(wù)器的消息寫入數(shù)據(jù)庫(kù)中,由當(dāng)前處于運(yùn)行狀態(tài)的一個(gè)主瀏覽器將該消息發(fā)送給服務(wù)器, 并讀取數(shù)據(jù)庫(kù)中存儲(chǔ)的服務(wù)器返回給自身的消息。
11.一種瀏覽器,應(yīng)用于終端內(nèi),其特征在于,所述瀏覽器包括第一執(zhí)行模塊,用于在確定所述瀏覽器為主瀏覽器時(shí),建立與服務(wù)器之間的Socket連接,并在確定終端內(nèi)運(yùn)行的數(shù)據(jù)庫(kù)內(nèi)有已啟動(dòng)的各瀏覽器寫入的待發(fā)送消息時(shí),將所述待發(fā)送的消息通過Socket連接發(fā)送給服務(wù)器,并將服務(wù)器返回的消息寫入所述數(shù)據(jù)庫(kù);第二執(zhí)行模塊,用于在確定所述瀏覽器為從瀏覽器時(shí),將自身待發(fā)送給服務(wù)器的消息寫入數(shù)據(jù)庫(kù)中,并讀取數(shù)據(jù)庫(kù)中存儲(chǔ)的服務(wù)器返回的消息。
12.如權(quán)利要求11所述的瀏覽器,其特征在于,所述第一執(zhí)行模塊,還用于通過Socket連接直接發(fā)送給服務(wù)器,并直接接收服務(wù)器返回給該主瀏覽器的消息,或者,將自身待發(fā)送給服務(wù)器的消息寫入數(shù)據(jù)庫(kù)中,由當(dāng)前處于運(yùn)行狀態(tài)的一個(gè)主瀏覽器將該消息發(fā)送給服務(wù)器,并讀取數(shù)據(jù)庫(kù)中存儲(chǔ)的服務(wù)器返回給自身的消息。
全文摘要
本申請(qǐng)公開了一種通過套接字連接進(jìn)行通信的方法、系統(tǒng)及設(shè)備,主要內(nèi)容包括在終端各瀏覽器內(nèi)建立瀏覽器之間都能夠訪問的數(shù)據(jù)庫(kù),使未與服務(wù)器建立Socket連接的從瀏覽器將需要發(fā)送給服務(wù)器的消息寫入數(shù)據(jù)庫(kù)中,由與服務(wù)器建立Socket連接的主瀏覽器將該消息接發(fā)送至服務(wù)器,同時(shí)將服務(wù)器返回的消息也寫入數(shù)據(jù)庫(kù)中,由從瀏覽器讀取服務(wù)器返回的消息,實(shí)現(xiàn)了多個(gè)瀏覽器之間共享Socket連接,且該通信過程不需要在瀏覽器內(nèi)額外安裝插件,避免了由于終端能力不足以支持插件而無法實(shí)現(xiàn)共享Socket連接的問題,同時(shí)由于不需要安裝插件,也消除了額外安裝插件所帶來的安全隱患。
文檔編號(hào)H04L29/08GK102420805SQ20101029763
公開日2012年4月18日 申請(qǐng)日期2010年9月27日 優(yōu)先權(quán)日2010年9月27日
發(fā)明者禹揚(yáng)帆 申請(qǐng)人:阿里巴巴集團(tuán)控股有限公司