網(wǎng)頁頁面數(shù)據(jù)共享方法和裝置制造方法
【專利摘要】本發(fā)明公開了一種網(wǎng)頁頁面數(shù)據(jù)共享方法和裝置,所述方法包括:由瀏覽器打開的網(wǎng)頁頁面中的主訂閱器向其訂閱者發(fā)送網(wǎng)絡(luò)請求指令,其訂閱者接收到網(wǎng)絡(luò)請求指令后將獲取的網(wǎng)絡(luò)數(shù)據(jù)返回至主訂閱器;其中,對于每個網(wǎng)頁頁面,在該網(wǎng)頁頁面中的訂閱器加載的一個指定URL的子頁面中,有為該網(wǎng)頁頁面中的每個訂閱器創(chuàng)建的監(jiān)聽器;主訂閱器將接收的網(wǎng)絡(luò)數(shù)據(jù)發(fā)送給對應(yīng)的監(jiān)聽器,該監(jiān)聽器將接收到的網(wǎng)絡(luò)數(shù)據(jù)存儲到指定URL的本地存儲文件中;每個監(jiān)聽器在接收到瀏覽器發(fā)送的存儲事件通知后,獲取指定URL的本地存儲文件中的網(wǎng)絡(luò)數(shù)據(jù)向本監(jiān)聽器對應(yīng)的訂閱器發(fā)送;每個訂閱器將接收的網(wǎng)絡(luò)數(shù)據(jù)傳遞給其訂閱者。從而節(jié)約了網(wǎng)絡(luò)資源,減輕了服務(wù)器負(fù)載。
【專利說明】網(wǎng)頁頁面數(shù)據(jù)共享方法和裝置
【技術(shù)領(lǐng)域】
[0001 ] 本發(fā)明涉及網(wǎng)絡(luò)技術(shù),尤其涉及一種網(wǎng)頁頁面數(shù)據(jù)共享方法和裝置。
【背景技術(shù)】
[0002]通常,網(wǎng)站是由多個網(wǎng)頁集合而成的,網(wǎng)頁是存在于與互聯(lián)網(wǎng)相連的計算機中的一個超文本標(biāo)記語言(HTML, Hyper Text Mark-up Language)格式的文件。網(wǎng)頁經(jīng)由URL(Uniform Resource Locator,統(tǒng)一資源定位符)來識別與存取,是萬維網(wǎng)中的一“頁”。每個網(wǎng)頁由瀏覽器(Browser)通過HTTP (超文本傳輸協(xié)議,Hypertext transfer protocol)協(xié)議與服務(wù)器(Server)之間進(jìn)行交互來獲取數(shù)據(jù),并通過瀏覽器打開的網(wǎng)頁頁面顯示獲取的數(shù)據(jù)。
[0003]同一瀏覽器可以同時打開多個網(wǎng)頁頁面。瀏覽器打開的多個網(wǎng)頁頁面獲取某個服務(wù)器的數(shù)據(jù)時,每個網(wǎng)頁頁面均向服務(wù)器發(fā)送請求,建立網(wǎng)絡(luò)連接后獲取所需數(shù)據(jù)。例如,網(wǎng)頁頁面Webpagel需要獲取空氣質(zhì)量數(shù)據(jù)時,向服務(wù)器發(fā)送請求并建立網(wǎng)絡(luò)連接獲取服務(wù)器提供的空氣質(zhì)量數(shù)據(jù);網(wǎng)頁頁面Webpage2需要獲取空氣質(zhì)量數(shù)據(jù)時,也向服務(wù)器發(fā)送請求并建立網(wǎng)絡(luò)連接獲取服務(wù)器提供的空氣質(zhì)量數(shù)據(jù)。這樣,多個網(wǎng)頁頁面所需數(shù)據(jù)相同的情況下,每個網(wǎng)頁頁面均向服務(wù)器發(fā)送請求、建立網(wǎng)絡(luò)連接來獲取數(shù)據(jù),無法實現(xiàn)數(shù)據(jù)共享,將造成網(wǎng)絡(luò)資源的浪費,并導(dǎo)致服務(wù)器負(fù)載加重。
[0004]現(xiàn)有的一種方式是通過Cookie (存儲在用戶本地終端的數(shù)據(jù))共享同一網(wǎng)站站點的不同網(wǎng)頁頁面的數(shù)據(jù),但是,通過Cookie共享的數(shù)據(jù)通常是比較簡短的字符串,比如,用戶名和用戶密碼。而且,通常大多數(shù)瀏覽器僅支持最大為4096字節(jié)的Cookie,并且僅允許每個網(wǎng)站站點保存20個Cookie。這樣,通過Cookie在網(wǎng)頁頁面間共享的數(shù)據(jù)量非常小,對節(jié)省網(wǎng)絡(luò)資源、減輕服務(wù)器負(fù)載起到的作用也非常小。
[0005]因此,有必要提供一種能夠節(jié)省網(wǎng)絡(luò)資源、減輕服務(wù)器負(fù)載的網(wǎng)頁頁面數(shù)據(jù)共享方法。
【發(fā)明內(nèi)容】
[0006]本發(fā)明實施例提供了一種網(wǎng)頁頁面數(shù)據(jù)共享方法和裝置,用以節(jié)省網(wǎng)絡(luò)資源、減輕服務(wù)器負(fù)載。
[0007]根據(jù)本發(fā)明的一個方面,提供了一種網(wǎng)頁頁面數(shù)據(jù)共享方法,包括:
[0008]由瀏覽器打開的網(wǎng)頁頁面中的若干個訂閱者分別創(chuàng)建的訂閱器中的主訂閱器向其訂閱者發(fā)送網(wǎng)絡(luò)請求指令,其訂閱者在接收到所述網(wǎng)絡(luò)請求指令后將通過網(wǎng)絡(luò)獲取到的網(wǎng)絡(luò)數(shù)據(jù)返回至所述主訂閱器;其中,對于每個網(wǎng)頁頁面,該網(wǎng)頁頁面中的訂閱器還加載了一個該網(wǎng)頁頁面的指定統(tǒng)一資源定位符URL的子頁面,在該指定URL的子頁面中有為該網(wǎng)頁頁面的每個訂閱者的訂閱器對應(yīng)創(chuàng)建的監(jiān)聽器;
[0009]所述主訂閱器將接收的網(wǎng)絡(luò)數(shù)據(jù)發(fā)送給與之對應(yīng)的監(jiān)聽器,該監(jiān)聽器將接收到的網(wǎng)絡(luò)數(shù)據(jù)存儲到所述指定URL的本地存儲空間后,所述瀏覽器向每個監(jiān)聽器發(fā)送攜帶有所述網(wǎng)絡(luò)數(shù)據(jù)的存儲事件;
[0010]每個監(jiān)聽器將所述存儲事件中攜帶的網(wǎng)絡(luò)數(shù)據(jù)向本監(jiān)聽器對應(yīng)的訂閱器發(fā)送;
[0011]每個訂閱器將其對應(yīng)的監(jiān)聽器發(fā)送的網(wǎng)絡(luò)數(shù)據(jù)傳遞給其訂閱者。
[0012]較佳地,在所述主訂閱器向其訂閱者發(fā)送網(wǎng)絡(luò)請求指令之前,還包括:
[0013]對于所述瀏覽器打開的每個網(wǎng)頁頁面,該網(wǎng)頁頁面中的每個訂閱器在創(chuàng)建后判斷是否已經(jīng)加載了一個指定URL的子頁面;若否,則加載一個指定URL的子頁面后,向其所在網(wǎng)頁頁面的指定URL的子頁面發(fā)送監(jiān)聽器創(chuàng)建指令、數(shù)據(jù)鍵值、以及本訂閱器的標(biāo)識;若是,則直接向其所在網(wǎng)頁頁面的指定URL的子頁面發(fā)送所述監(jiān)聽器創(chuàng)建指令、所述數(shù)據(jù)鍵值、以及本訂閱器的標(biāo)識;
[0014]其中,所述數(shù)據(jù)鍵值是根據(jù)本訂閱器的訂閱者所需數(shù)據(jù)采用哈希算法生成的。
[0015]進(jìn)一步,在所述發(fā)送監(jiān)聽器創(chuàng)建指令、數(shù)據(jù)鍵值、以及本訂閱器的標(biāo)識后,還包括:
[0016]所述指定URL的子頁面根據(jù)接收的監(jiān)聽器創(chuàng)建指令,創(chuàng)建一個標(biāo)識與接收的訂閱器的標(biāo)識相同的監(jiān)聽器,并將接收的數(shù)據(jù)鍵值傳送給該監(jiān)聽器,該監(jiān)聽器存儲接收的數(shù)據(jù)鍵值,并在初始化過程中添加存儲事件的監(jiān)聽功能。
[0017]較佳地,在所述主訂閱器向其訂閱者發(fā)送網(wǎng)絡(luò)請求指令之前,還包括:
[0018]每個監(jiān)聽器定時查詢所述本地存儲空間中對應(yīng)本監(jiān)聽器存儲的數(shù)據(jù)鍵值的主鍵master_key參數(shù)是否過期;
[0019]若所述master_key參數(shù)未過期,貝U進(jìn)一步確定所述master_key參數(shù)中的監(jiān)聽器標(biāo)識與本監(jiān)聽器的標(biāo)識相同后,刷新所述maSter_key參數(shù)中的過期時間;
[0020]若所述master_key參數(shù)過期,則嘗試將該master_key參數(shù)中的監(jiān)聽器標(biāo)識設(shè)置為本監(jiān)聽器的標(biāo)識;若設(shè)置成功、且本監(jiān)聽器在設(shè)置之前為從監(jiān)聽器,則確定本監(jiān)聽器由從監(jiān)聽器升為主監(jiān)聽器;若設(shè)置不成功、且本監(jiān)聽器在設(shè)置之前為主監(jiān)聽器,則確定本監(jiān)聽器由主監(jiān)聽器降為從監(jiān)聽器;
[0021]由從變?yōu)橹鞯谋O(jiān)聽器通知對應(yīng)的訂閱器升為主訂閱器;由主變?yōu)閺牡谋O(jiān)聽器通知對應(yīng)的訂閱器降為從訂閱器。
[0022]較佳地,所述監(jiān)聽器將接收到的網(wǎng)絡(luò)數(shù)據(jù)存儲到所述指定URL的本地存儲空間,具體包括:
[0023]在所述指定URL的本地存儲空間中,所述監(jiān)聽器將接收到的網(wǎng)絡(luò)數(shù)據(jù)與所述本地存儲空間中記錄的本監(jiān)聽器存儲的數(shù)據(jù)鍵值進(jìn)行對應(yīng)存儲;以及
[0024]所述存儲事件中還攜帶有與所述網(wǎng)絡(luò)數(shù)據(jù)對應(yīng)的數(shù)據(jù)鍵值;以及
[0025]所述每個監(jiān)聽器根據(jù)所述存儲事件中的數(shù)據(jù)向本監(jiān)聽器對應(yīng)的訂閱器進(jìn)行發(fā)送,具體包括:
[0026]每個監(jiān)聽器在接收到所述的存儲事件后,若接收的存儲事件中攜帶的數(shù)據(jù)鍵值與本監(jiān)聽器存儲的數(shù)據(jù)鍵值相等,則將所述存儲事件中攜帶的網(wǎng)絡(luò)數(shù)據(jù)向本監(jiān)聽器對應(yīng)的訂閱器發(fā)送。
[0027]較佳地,所述訂閱器、監(jiān)聽器均在初始化過程中添加窗口的消息事件監(jiān)聽功能。
[0028]較佳地,所述瀏覽器打開的網(wǎng)頁頁面為多個。
[0029]根據(jù)本發(fā)明的另一個方面,還提供了一種網(wǎng)頁頁面數(shù)據(jù)共享裝置,包括:瀏覽器打開的網(wǎng)頁頁面中的若干個訂閱者、由各訂閱者分別創(chuàng)建的訂閱器,以及對于每個網(wǎng)頁頁面,在該網(wǎng)頁頁面的指定統(tǒng)一資源定位符URL的子頁面中為該網(wǎng)頁頁面的每個訂閱者的訂閱器對應(yīng)創(chuàng)建的監(jiān)聽器;其中,
[0030]所述訂閱器中的主訂閱器用于向其訂閱者發(fā)送網(wǎng)絡(luò)請求指令,并將其訂閱者返回的網(wǎng)絡(luò)數(shù)據(jù)發(fā)送給與之對應(yīng)的監(jiān)聽器;以及所述訂閱器還將從監(jiān)聽器接收到的網(wǎng)絡(luò)數(shù)據(jù)傳遞給其訂閱者;
[0031]所述訂閱者用于接收到網(wǎng)絡(luò)請求指令后,通過網(wǎng)絡(luò)獲取網(wǎng)絡(luò)數(shù)據(jù)向其訂閱器返回;以及將從其訂閱器接收到的網(wǎng)絡(luò)數(shù)據(jù)在網(wǎng)頁頁面中進(jìn)行顯示;
[0032]所述監(jiān)聽器用于將從訂閱器接收到的網(wǎng)絡(luò)數(shù)據(jù)存儲到所述指定URL的本地存儲空間中;以及在接收到所述瀏覽器發(fā)送的攜帶有所述網(wǎng)絡(luò)數(shù)據(jù)的存儲事件后,將所述存儲事件中攜帶的網(wǎng)絡(luò)數(shù)據(jù)向本監(jiān)聽器對應(yīng)的訂閱器發(fā)送。
[0033]較佳地,所述訂閱器還用于在本訂閱器創(chuàng)建后判斷是否已經(jīng)加載了一個指定URL的子頁面;若否,則加載一個指定URL的子頁面;之后,向該指定URL的子頁面發(fā)送監(jiān)聽器創(chuàng)建指令、數(shù)據(jù)鍵值、以及本訂閱器的標(biāo)識;該指定URL的子頁面根據(jù)接收的監(jiān)聽器創(chuàng)建指令,創(chuàng)建一個標(biāo)識與接收的訂閱器的標(biāo)識相同的監(jiān)聽器,并將接收的數(shù)據(jù)鍵值傳送給該監(jiān)聽器,該監(jiān)聽器存儲接收的數(shù)據(jù)鍵值,并在初始化過程中添加存儲事件的監(jiān)聽功能;其中,所述數(shù)據(jù)鍵值是根據(jù)本訂閱器的訂閱者所需數(shù)據(jù)采用哈希算法生成的。
[0034]較佳地,所述監(jiān)聽器還用于定時查詢所述本地存儲空間中對應(yīng)本監(jiān)聽器存儲的數(shù)據(jù)鍵值的主鍵master_key參數(shù)是否過期;若所述master_key參數(shù)未過期,則進(jìn)一步確定所述master_key參數(shù)中的監(jiān)聽器標(biāo)識與本監(jiān)聽器的標(biāo)識相同后,刷新所述master_key參數(shù)中的過期時間;若所述master_key參數(shù)過期,貝U嘗試將該master_key參數(shù)中的監(jiān)聽器標(biāo)識設(shè)置為本監(jiān)聽器的標(biāo)識;若設(shè)置成功、且本監(jiān)聽器在設(shè)置之前為從監(jiān)聽器,則確定本監(jiān)聽器由從監(jiān)聽器升為主監(jiān)聽器;若設(shè)置不成功、且本監(jiān)聽器在設(shè)置之前為主監(jiān)聽器,則確定本監(jiān)聽器由主監(jiān)聽器降為從監(jiān)聽器;由從變?yōu)橹鞯谋O(jiān)聽器通知對應(yīng)的訂閱器升為主訂閱器;由主變?yōu)閺牡谋O(jiān)聽器通知對應(yīng)的訂閱器降為從訂閱器。。
[0035]本發(fā)明實施例的技術(shù)方案中,由瀏覽器打開的網(wǎng)頁頁面中的各訂閱者分別創(chuàng)建的訂閱器中的主訂閱器向其訂閱者發(fā)送網(wǎng)絡(luò)請求指令,其訂閱者向服務(wù)器發(fā)送網(wǎng)絡(luò)請求并獲取服務(wù)器返回的網(wǎng)絡(luò)數(shù)據(jù);并由主訂閱器對應(yīng)的監(jiān)聽器將獲取的網(wǎng)絡(luò)數(shù)據(jù)存儲到指定URL的本地存儲空間中;每個監(jiān)聽器接收到瀏覽器發(fā)送的存儲事件后,將存儲事件中攜帶的網(wǎng)絡(luò)數(shù)據(jù)向?qū)?yīng)的訂閱器發(fā)送,并由訂閱器將網(wǎng)絡(luò)數(shù)據(jù)傳遞給其訂閱者。由此網(wǎng)頁頁面中的主訂閱器的訂閱者向服務(wù)器發(fā)送網(wǎng)絡(luò)請求、獲取服務(wù)器返回的網(wǎng)絡(luò)數(shù)據(jù),本網(wǎng)頁頁面以及其他網(wǎng)頁頁面中的各訂閱器的訂閱者可從本地存儲文件中獲取到該網(wǎng)絡(luò)數(shù)據(jù),而無需再向服務(wù)器發(fā)送網(wǎng)絡(luò)請求,實現(xiàn)了網(wǎng)頁頁面數(shù)據(jù)共享,從而節(jié)省了網(wǎng)絡(luò)資源,減輕了服務(wù)器的負(fù)載;尤其對于設(shè)置自動刷新的網(wǎng)站的網(wǎng)頁頁面,如新聞推送類網(wǎng)站的網(wǎng)頁頁面,將大大節(jié)省網(wǎng)絡(luò)資源,大大減輕服務(wù)器的負(fù)載。
【專利附圖】
【附圖說明】
[0036]圖1為本發(fā)明實施例的網(wǎng)頁頁面數(shù)據(jù)共享裝置的內(nèi)部結(jié)構(gòu)框圖;
[0037]圖2為本發(fā)明實施例的加載指定URL的子頁面并創(chuàng)建監(jiān)聽器的方法流程圖;[0038]圖3為本發(fā)明實施例的維護(hù)訂閱器為主訂閱器或從訂閱器的方法流程圖;
[0039]圖4為本發(fā)明實施例的網(wǎng)頁頁面數(shù)據(jù)共享方法的流程圖。
【具體實施方式】
[0040]為使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下參照附圖并舉出優(yōu)選實施例,對本發(fā)明進(jìn)一步詳細(xì)說明。然而,需要說明的是,說明書中列出的許多細(xì)節(jié)僅僅是為了使讀者對本發(fā)明的一個或多個方面有一個透徹的理解,即便沒有這些特定的細(xì)節(jié)也可以實現(xiàn)本發(fā)明的這些方面。
[0041]本申請使用的“模塊”、“系統(tǒng)”等術(shù)語旨在包括與計算機相關(guān)的實體,例如但不限于硬件、固件、軟硬件組合、軟件或者執(zhí)行中的軟件。例如,模塊可以是,但并不僅限于:處理器上運行的進(jìn)程、處理器、對象、可執(zhí)行程序、執(zhí)行的線程、程序和/或計算機。舉例來說,計算設(shè)備上運行的應(yīng)用程序和此計算設(shè)備都可以是模塊。一個或多個模塊可以位于執(zhí)行中的一個進(jìn)程和/或線程內(nèi)。
[0042]本發(fā)明的發(fā)明人發(fā)現(xiàn),網(wǎng)頁頁面中可以存在多個獲取服務(wù)器的數(shù)據(jù)的功能模塊,即訂閱者;網(wǎng)頁頁面中的訂閱者通過向服務(wù)器發(fā)送網(wǎng)絡(luò)請求,建立網(wǎng)絡(luò)連接獲取所需數(shù)據(jù);由此本發(fā)明的發(fā)明人考慮到,可以建立各訂閱者之間的聯(lián)系,網(wǎng)頁頁面中的一個訂閱者通過發(fā)送網(wǎng)絡(luò)請求并建立網(wǎng)絡(luò)連接獲取所需數(shù)據(jù)后,與本網(wǎng)頁頁面以及其他網(wǎng)頁頁面中需要該數(shù)據(jù)的訂閱者共享該數(shù)據(jù),將會大量減少向服務(wù)器發(fā)送的網(wǎng)絡(luò)請求、以及建立網(wǎng)絡(luò)連接后通過網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù),并減少服務(wù)器處理的網(wǎng)絡(luò)請求量以及向訂閱者返回的數(shù)據(jù)量,從而節(jié)省網(wǎng)絡(luò)資源、減輕服務(wù)器的負(fù)載。
[0043]基于上述的思路,本發(fā)明的技術(shù)方案中,瀏覽器打開的網(wǎng)頁頁面中的各訂閱者分別創(chuàng)建訂閱器,創(chuàng)建的各訂閱器中有主訂閱器和從訂閱器;而且,每個網(wǎng)頁頁面中的訂閱器還加載了一個指定URL的子頁面,在該指定URL的子頁面中有為該網(wǎng)頁頁面的訂閱者的訂閱器對應(yīng)創(chuàng)建的監(jiān)聽器。這樣,由主訂閱器的訂閱者向服務(wù)器發(fā)送網(wǎng)絡(luò)請求,并獲取服務(wù)器返回的網(wǎng)絡(luò)數(shù)據(jù)后,由主訂閱器對應(yīng)的監(jiān)聽器將獲取的網(wǎng)絡(luò)數(shù)據(jù)存儲到指定URL的本地存儲空間中,之后,瀏覽器向每個監(jiān)聽器發(fā)送攜帶有該網(wǎng)絡(luò)數(shù)據(jù)的存儲事件;每個監(jiān)聽器將接收的存儲事件中攜帶的網(wǎng)絡(luò)數(shù)據(jù)向本監(jiān)聽器對應(yīng)的訂閱器發(fā)送,并由訂閱器將網(wǎng)絡(luò)數(shù)據(jù)傳遞給其訂閱者。從而,節(jié)省網(wǎng)絡(luò)資源,減輕服務(wù)器的負(fù)載。
[0044]下面結(jié)合附圖詳細(xì)說明本發(fā)明的技術(shù)方案。本發(fā)明實施例提供的網(wǎng)頁頁面數(shù)據(jù)共享裝置的內(nèi)部結(jié)構(gòu)框圖如圖1所示,具體包括:瀏覽器打開的網(wǎng)頁頁面中的若干個訂閱者101、由各訂閱者101分別創(chuàng)建的訂閱器102,以及對于每個網(wǎng)頁頁面,在該網(wǎng)頁頁面的指定URL的子頁面中為該網(wǎng)頁頁面的每個訂閱者101的訂閱器對應(yīng)創(chuàng)建的監(jiān)聽器103。
[0045]基于本發(fā)明的網(wǎng)頁頁面數(shù)據(jù)共享裝置中的訂閱者101、訂閱器102和監(jiān)聽器103,可以實現(xiàn)網(wǎng)頁頁面數(shù)據(jù)共享。事實上,在實現(xiàn)網(wǎng)頁頁面數(shù)據(jù)共享之前,可以由訂閱者的訂閱器102預(yù)先加載一個指定URL的子頁面,并由指定URL的子頁面創(chuàng)建與訂閱器102對應(yīng)的監(jiān)聽器103,具體方法的流程如圖2所示,包括如下步驟:
[0046]S201:瀏覽器打開網(wǎng)頁頁面。
[0047]具體地,用戶可通過瀏覽器打開一個或多個網(wǎng)頁頁面,而且,每個網(wǎng)頁頁面中可以存在多個訂閱者101,訂閱者101通過網(wǎng)絡(luò)獲取網(wǎng)絡(luò)數(shù)據(jù),并將獲取的網(wǎng)絡(luò)數(shù)據(jù)在瀏覽器的網(wǎng)頁頁面內(nèi)進(jìn)行顯示,以供用戶瀏覽這些網(wǎng)頁頁面的內(nèi)容。
[0048]S202:對于瀏覽器打開的每個網(wǎng)頁頁面,該網(wǎng)頁頁面中的每個訂閱器102判斷是否已經(jīng)加載了一個指定URL的子頁面;若是,則跳轉(zhuǎn)到步驟S204 ;否則,執(zhí)行步驟S203。
[0049]具體地,對于瀏覽器打開的每個網(wǎng)頁頁面,該網(wǎng)頁頁面中的每個訂閱器102在創(chuàng)建后時,均先判斷該網(wǎng)頁頁面中是否已經(jīng)通過標(biāo)簽iframe加載了一個指定URL的子頁面,若已經(jīng)加載,則直接跳轉(zhuǎn)到步驟S204 ;否則,由該訂閱器102執(zhí)行下述步驟S203加載一個指定URL的子頁面后,再執(zhí)行步驟S204。其中,指定URL的子頁面以不可見方式加載,即不在瀏覽器中顯示。
[0050]其中,訂閱器102是由訂閱者101創(chuàng)建的,且訂閱器102在創(chuàng)建完成后,生成一個隨機數(shù)作為本訂閱器的標(biāo)識;通常,生成的隨機數(shù)是一個大于16位的隨機數(shù),因大位數(shù)的隨機數(shù)重復(fù)的概率小,從而可以很好地保證訂閱器的標(biāo)識的唯一性。而且,訂閱器102創(chuàng)建完成后,訂閱器102初始化,并在初始化過程中添加窗口(Window)的消息(Message)事件監(jiān)聽功能,以使得訂閱器102可以接收發(fā)自監(jiān)聽器103的信息。
[0051]S203:訂閱器102加載一個指定URL的子頁面。
[0052]在本步驟中,訂閱器102通過iframe加載一個指定URL的子頁面,作為本訂閱器102所在網(wǎng)頁頁面的指定URL的子頁面,之后執(zhí)行步驟S204。
[0053]而且,每個網(wǎng)頁頁面中存在多個訂閱者101的訂閱器102,其中一個訂閱器102加載該網(wǎng)頁頁面的指定URL的子頁面后,該網(wǎng)頁頁面中的其它訂閱器102可以不再加載該指定URL的子頁面。
[0054]之后,訂閱器102向指定URL的子頁面發(fā)送監(jiān)聽器創(chuàng)建指令,指定URL的子頁面根據(jù)監(jiān)聽器創(chuàng)建指令創(chuàng)建與該訂閱器102對應(yīng)的監(jiān)聽器103,具體步驟如S204-S206所示。
[0055]S204:訂閱器102向其所在網(wǎng)頁頁面所的指定URL的子頁面發(fā)送監(jiān)聽器創(chuàng)建指令、數(shù)據(jù)鍵值、以及本訂閱器102的標(biāo)識;其中,該數(shù)據(jù)鍵值是根據(jù)本訂閱器102的訂閱者101所需數(shù)據(jù)采用哈希算法生成的。
[0056]其中,訂閱者101可以預(yù)先根據(jù)本訂閱者101所需數(shù)據(jù),采用哈希(Hash)算法生成本訂閱者101所需數(shù)據(jù)的數(shù)據(jù)鍵值(Key),這樣,若多個訂閱者101所需數(shù)據(jù)相同,則這多個訂閱者101所需數(shù)據(jù)的數(shù)據(jù)鍵值也相同。
[0057]S205:指定URL的子頁面根據(jù)接收的監(jiān)聽器創(chuàng)建指令,創(chuàng)建一個標(biāo)識與接收的訂閱器102的標(biāo)識相同的監(jiān)聽器103,并將接收的數(shù)據(jù)鍵值傳送給該監(jiān)聽器103。
[0058]其中,創(chuàng)建的監(jiān)聽器103的標(biāo)識與接收的訂閱器102的標(biāo)識相同,從而,標(biāo)識相同的監(jiān)聽器103與訂閱器102之間就具有了對應(yīng)關(guān)系。
[0059]S206:該監(jiān)聽器103存儲接收的數(shù)據(jù)鍵值,并在初始化過程中添加存儲事件的監(jiān)聽功能。
[0060]具體地,該監(jiān)聽器103存儲指定URL的子頁面?zhèn)魉瓦^來的數(shù)據(jù)鍵值后,該監(jiān)聽器初始化,并在初始化過程中添加存儲事件的監(jiān)聽功能。而且,監(jiān)聽器103在初始化過程中還添加窗口的消息事件監(jiān)聽功能,以使得監(jiān)聽器103可以接收發(fā)自訂閱器102的信息。
[0061]事實上,在加載了指定URL的子頁面后,瀏覽器會自動創(chuàng)建一個該指定URL的本地存儲(LocalStorage)空間;若加載了多個指定URL的子頁面,則這些指定URL的子頁面均共用此本地存儲空間。在監(jiān)聽器103添加存儲事件的監(jiān)聽功能過程中,監(jiān)聽器103查找指定URL的本地存儲空間中是否有該數(shù)據(jù)鍵值與主鍵(maSter_key)參數(shù)的對應(yīng)記錄;若沒有,則增加一條該數(shù)據(jù)鍵值與master_key參數(shù)的對應(yīng)記錄,并將master_key參數(shù)中的監(jiān)聽器標(biāo)識設(shè)置為本監(jiān)聽器103的標(biāo)識;此外,maSter_key參數(shù)中還可包括過期時間;監(jiān)聽器103將master_key參數(shù)中的監(jiān)聽器標(biāo)識設(shè)置為本監(jiān)聽器的標(biāo)識后,還設(shè)置master_key參數(shù)中的過期時間。
[0062]上述各訂閱者101分別創(chuàng)建的訂閱器102中有主訂閱器和從訂閱器,訂閱器102為主訂閱器或從訂閱器是由與訂閱器102對應(yīng)的監(jiān)聽器103來維護(hù)的:對于每個監(jiān)聽器103,若該監(jiān)聽器為主監(jiān)聽器,則該監(jiān)聽器對應(yīng)的訂閱器102為主訂閱器;若該監(jiān)聽器為從監(jiān)聽器,則該監(jiān)聽器對應(yīng)的訂閱器102為從訂閱器。換言之,若監(jiān)聽器103由從變?yōu)橹?,則由從變?yōu)橹鞯谋O(jiān)聽器103通知對應(yīng)的訂閱器102升為主訂閱器;若監(jiān)聽器103由主變?yōu)閺?,則由主變?yōu)閺牡谋O(jiān)聽器103通知對應(yīng)的訂閱器102降為從訂閱器。
[0063]例如,對于其中的一個監(jiān)聽器A,監(jiān)聽器A維護(hù)與其對應(yīng)的訂閱器102為主訂閱器或從訂閱器的方法的流程如圖3所示,具體包括如下步驟:
[0064]S301:監(jiān)聽器A定時查詢本地存儲空間中對應(yīng)本監(jiān)聽器A存儲的數(shù)據(jù)鍵值的主鍵參數(shù)是否過期;若是,則執(zhí)行步驟S302 ;否則,執(zhí)行步驟S312。
[0065]具體地,本地存儲(LocalStorage)空間中存儲有對應(yīng)每個數(shù)據(jù)鍵值的master_key參數(shù),其中,若對應(yīng)一個數(shù)據(jù)鍵值的master_key參數(shù)中的監(jiān)聽器標(biāo)識與一個存儲有該數(shù)據(jù)鍵值的監(jiān)聽器的標(biāo)識相同,則表明該監(jiān)聽器為主監(jiān)聽器。
[0066]而且,每個maSter_key參數(shù)中還包括一個寫入的過期時間,在本步驟中,監(jiān)聽器A定時查詢LocalStorage空間中對應(yīng)本監(jiān)聽器A存儲的數(shù)據(jù)鍵值的master_key參數(shù)是否過期,具體為:監(jiān)聽器A將LocalStorage空間中、對應(yīng)本監(jiān)聽器A存儲的數(shù)據(jù)鍵值的master_key參數(shù)中的過期時間,與當(dāng)前時間進(jìn)行比較;若當(dāng)前時間已超過對應(yīng)本監(jiān)聽器A存儲的數(shù)據(jù)鍵值的master_key參數(shù)中的過期時間,則判斷對應(yīng)本監(jiān)聽器A存儲的數(shù)據(jù)鍵值的master_key參數(shù)已經(jīng)過期,執(zhí)行步驟S302 ;否則,判斷未過期,執(zhí)行步驟S312。
[0067]S302:監(jiān)聽器A嘗試將該maSter_key參數(shù)中的監(jiān)聽器標(biāo)識設(shè)置為本監(jiān)聽器A的標(biāo)識,并判斷設(shè)置是否成功;若是,則執(zhí)行步驟S303 ;否則,執(zhí)行步驟S304。
[0068]具體地,若監(jiān)聽器A查詢到對應(yīng)本監(jiān)聽器A存儲的數(shù)據(jù)鍵值的master_key參數(shù)過期,則在本步驟中,監(jiān)聽器A嘗試將該master_key參數(shù)中的監(jiān)聽器標(biāo)識設(shè)置為本監(jiān)聽器A的標(biāo)識,并判斷設(shè)置是否成功。
[0069]S303:監(jiān)聽器A確定本監(jiān)聽器A為主監(jiān)聽器,并通知對應(yīng)的訂閱器102為主訂閱器。
[0070]具體地,若監(jiān)聽器A嘗試將該master_key參數(shù)中的監(jiān)聽器標(biāo)識設(shè)置為本監(jiān)聽器A的標(biāo)識成功,則在本步驟中,監(jiān)聽器A確定本監(jiān)聽器A為主監(jiān)聽器,并通知對應(yīng)的訂閱器102為主訂閱器。而且,若監(jiān)聽器A嘗試將該master_key參數(shù)中的監(jiān)聽器標(biāo)識設(shè)置為本監(jiān)聽器A的標(biāo)識成功,且設(shè)置之前本監(jiān)聽器A為從監(jiān)聽器,則監(jiān)聽器A確定本監(jiān)聽器A由從監(jiān)聽器升為主監(jiān)聽器,并設(shè)置該maSter_key參數(shù)中的過期時間,即將當(dāng)前時間加上一個設(shè)定時間段后得到的時間值作為該maSter_key參數(shù)中的過期時間,之后通知對應(yīng)的訂閱器升為主訂閱器。若監(jiān)聽器A嘗試將該master_key參數(shù)中的監(jiān)聽器標(biāo)識設(shè)置為本監(jiān)聽器A的標(biāo)識成功,且設(shè)置之前本監(jiān)聽器A為主監(jiān)聽器,則監(jiān)聽器A確定本監(jiān)聽器A仍然為主監(jiān)聽器,并通知對應(yīng)的訂閱器仍然為主訂閱器。
[0071]S304:監(jiān)聽器A確定本監(jiān)聽器A為從監(jiān)聽器,并通知對應(yīng)的訂閱器102為從訂閱器。
[0072]具體地,若監(jiān)聽器A嘗試將該master_key參數(shù)中的監(jiān)聽器標(biāo)識設(shè)置為本監(jiān)聽器A的標(biāo)識不成功,則在本步驟中,監(jiān)聽器A確定本監(jiān)聽器A為從監(jiān)聽器,并通知對應(yīng)的訂閱器102為從訂閱器。而且,若監(jiān)聽器A嘗試將該master_key參數(shù)中的監(jiān)聽器標(biāo)識設(shè)置為本監(jiān)聽器A的標(biāo)識不成功,且設(shè)置之前本監(jiān)聽器A為主監(jiān)聽器,則監(jiān)聽器A確定本監(jiān)聽器A由主監(jiān)聽器降為從監(jiān)聽器,并通知對應(yīng)的訂閱器降為從訂閱器。若監(jiān)聽器A嘗試將該master_key參數(shù)中的監(jiān)聽器標(biāo)識設(shè)置為本監(jiān)聽器A的標(biāo)識不成功,且設(shè)置之前本監(jiān)聽器A為從監(jiān)聽器,則監(jiān)聽器A確定本監(jiān)聽器A仍然為從監(jiān)聽器,并通知對應(yīng)的訂閱器仍然為從訂閱器。
[0073]S312:監(jiān)聽器A進(jìn)一步確定對應(yīng)本監(jiān)聽器A存儲的數(shù)據(jù)鍵值的master_key參數(shù)中的監(jiān)聽器標(biāo)識與本監(jiān)聽器A的標(biāo)識是否相同;若是,則執(zhí)行步驟S313 ;否則,執(zhí)行步驟S314。
[0074]具體地,若監(jiān)聽器A定時查詢本地存儲(LocalStorage)空間中對應(yīng)本監(jiān)聽器A存儲的數(shù)據(jù)鍵值的主鍵參數(shù)未過期,則在本步驟中進(jìn)一步確定對應(yīng)本監(jiān)聽器A存儲的數(shù)據(jù)鍵值的master_key參數(shù)中的監(jiān)聽器標(biāo)識與本監(jiān)聽器A的標(biāo)識是否相同。
[0075]S313:監(jiān)聽器A確定本監(jiān)聽器為主監(jiān)聽器,刷新對應(yīng)本監(jiān)聽器A存儲的數(shù)據(jù)鍵值的master_key參數(shù)中的過期時間。
[0076]具體地,若監(jiān)聽器A確定對應(yīng)本監(jiān)聽器A存儲的數(shù)據(jù)鍵值的master_key參數(shù)中的監(jiān)聽器標(biāo)識與本監(jiān)聽器A的標(biāo)識相同,則確定當(dāng)前時間本監(jiān)聽器A為主監(jiān)聽器,進(jìn)而確定本監(jiān)聽器A對應(yīng)的訂閱器為主訂閱器,并刷新該maSter_key參數(shù)中的過期時間,即將當(dāng)前時間加上一個設(shè)定時間段后得到的時間值作為該master_key參數(shù)中的過期時間。
[0077]S314:監(jiān)聽器A確定本監(jiān)聽器A為從監(jiān)聽器。
[0078]具體地,若監(jiān)聽器A確定對應(yīng)本監(jiān)聽器A存儲的數(shù)據(jù)鍵值的master_key參數(shù)中的監(jiān)聽器標(biāo)識與本監(jiān)聽器A的標(biāo)識不相同,則確定當(dāng)前時間本監(jiān)聽器A為從監(jiān)聽器,進(jìn)而確定本監(jiān)聽器A對應(yīng)的訂閱器為從訂閱器。
[0079]在實際應(yīng)用中,用戶可以通過瀏覽器設(shè)置網(wǎng)頁頁面數(shù)據(jù)共享功能是否可用,若用戶設(shè)置網(wǎng)頁頁面數(shù)據(jù)共享功能不可用,則網(wǎng)頁頁面根據(jù)現(xiàn)有技術(shù)的方法向服務(wù)器發(fā)送網(wǎng)絡(luò)請求獲取數(shù)據(jù);若用戶設(shè)置網(wǎng)頁頁面數(shù)據(jù)共享功能可用,則可基于本發(fā)明實施例提供的網(wǎng)頁頁面數(shù)據(jù)共享裝置來實現(xiàn)網(wǎng)頁頁面數(shù)據(jù)共享。
[0080]具體地,本發(fā)明實施例提供的網(wǎng)頁頁面數(shù)據(jù)共享方法的流程圖,如圖4所示,包括如下步驟:
[0081]S401:由瀏覽器打開的網(wǎng)頁頁面中的若干個訂閱者101分別創(chuàng)建的訂閱器102中的主訂閱器向其訂閱者發(fā)送網(wǎng)絡(luò)請求指令。
[0082]具體地,瀏覽器打開的網(wǎng)頁頁面可以為一個,也可以為多個;對于每個網(wǎng)頁頁面,該網(wǎng)頁頁面中的訂閱者101的訂閱器102加載了一個該網(wǎng)頁頁面的指定URL的子頁面,在該指定URL的子頁面中有為該網(wǎng)頁頁面的每個訂閱者101的訂閱器102對應(yīng)創(chuàng)建的監(jiān)聽器103。在本步驟中,由若干個訂閱者101分別創(chuàng)建的訂閱器102中的主訂閱器向其訂閱者發(fā)送網(wǎng)絡(luò)請求指令。[0083]S402:主訂閱器的訂閱者在接收到網(wǎng)絡(luò)請求指令后,將通過網(wǎng)絡(luò)獲取到的網(wǎng)絡(luò)數(shù)據(jù)返回至主訂閱器。
[0084]具體地,主訂閱器的訂閱者在接收到網(wǎng)絡(luò)請求指令后,向服務(wù)器發(fā)送網(wǎng)絡(luò)請求,通過網(wǎng)絡(luò)獲取服務(wù)器返回的網(wǎng)絡(luò)數(shù)據(jù);之后,主訂閱器的訂閱者將通過網(wǎng)絡(luò)獲取到的網(wǎng)絡(luò)數(shù)據(jù)返回至主訂閱器。
[0085]S403:主訂閱器將接收的網(wǎng)絡(luò)數(shù)據(jù)發(fā)送給與之對應(yīng)的監(jiān)聽器。
[0086]具體地,主訂閱器將接收的網(wǎng)絡(luò)數(shù)據(jù)、以及本訂閱器的標(biāo)識向本訂閱器所在網(wǎng)頁頁面的指定URL的子頁面發(fā)送;瀏覽器根據(jù)該次信息發(fā)送(PostMessage)事件,通知該指定URL的子頁面中、添加有窗口的消息事件監(jiān)聽功能的監(jiān)聽器103 ;該指定URL的子頁面中的各監(jiān)聽器103根據(jù)瀏覽器發(fā)送的消息事件通知,獲取到主訂閱器發(fā)送的網(wǎng)絡(luò)數(shù)據(jù)和標(biāo)識后,若確認(rèn)其中攜帶的標(biāo)識與本監(jiān)聽器的標(biāo)識相同,則接收網(wǎng)絡(luò)數(shù)據(jù);否則,丟棄網(wǎng)絡(luò)數(shù)據(jù)。
[0087]S404:與主訂閱器對應(yīng)的監(jiān)聽器將接收到的網(wǎng)絡(luò)數(shù)據(jù)存儲到指定URL的本地存儲空間中。
[0088]具體地,在指定URL的本地存儲空間中,與主訂閱器對應(yīng)的監(jiān)聽器(即主監(jiān)聽器)將接收到的網(wǎng)絡(luò)數(shù)據(jù),與本地存儲(LocalStorage )空間中記錄的本監(jiān)聽器存儲的數(shù)據(jù)鍵值進(jìn)行對應(yīng)存儲。
[0089]也就是說,在本地存儲(LocalStorage)空間中,存儲有數(shù)據(jù)鍵值與master_key參數(shù)的對應(yīng)關(guān)系,并且,還可以存儲有數(shù)據(jù)鍵值與網(wǎng)絡(luò)數(shù)據(jù)的對應(yīng)關(guān)系;這些對應(yīng)關(guān)系具體可以key-value形式進(jìn)行存儲。
[0090]例如,數(shù)據(jù)鍵值與master_key參數(shù)的對應(yīng)關(guān)系中,可以數(shù)據(jù)鍵值作為key,master_key參數(shù)作為對應(yīng)該key的value進(jìn)行存儲;
[0091]數(shù)據(jù)鍵值與網(wǎng)絡(luò)數(shù)據(jù)的對應(yīng)關(guān)系中,可以數(shù)據(jù)鍵值作為key,網(wǎng)絡(luò)數(shù)據(jù)作為對應(yīng)該key的value進(jìn)行存儲。
[0092]在監(jiān)聽器將接收的網(wǎng)絡(luò)數(shù)據(jù)存儲到指定URL的本地存儲(LocalStorage)空間后,會觸發(fā)瀏覽器向每個監(jiān)聽器103發(fā)送攜帶有該網(wǎng)絡(luò)數(shù)據(jù)的存儲事件;此外,存儲事件中還可攜帶有與該網(wǎng)絡(luò)數(shù)據(jù)對應(yīng)的數(shù)據(jù)鍵值。
[0093]S405:每個監(jiān)聽器103在接收到存儲事件后,將接收的存儲事件中攜帶的網(wǎng)絡(luò)數(shù)據(jù)向本監(jiān)聽器對應(yīng)的訂閱器發(fā)送。
[0094]具體地,主訂閱器對應(yīng)的監(jiān)聽器將接收的網(wǎng)絡(luò)數(shù)據(jù)存儲到指定URL的本地存儲空間中后,瀏覽器向每個添加了窗口的消息事件監(jiān)聽功能的、指定URL的子頁面中的監(jiān)聽器發(fā)送攜帶有該網(wǎng)絡(luò)數(shù)據(jù)的存儲事件;每個監(jiān)聽器103在接收到存儲事件后,若確定接收的存儲事件中攜帶的數(shù)據(jù)鍵值與本監(jiān)聽器存儲的數(shù)據(jù)鍵值相等,則將接收的存儲事件中的網(wǎng)絡(luò)數(shù)據(jù)向本監(jiān)聽器對應(yīng)的訂閱器發(fā)送。
[0095]其中,對于每個監(jiān)聽器103,該監(jiān)聽器將接收的存儲事件中的網(wǎng)絡(luò)數(shù)據(jù)向本監(jiān)聽器對應(yīng)的訂閱器發(fā)送具體為:該監(jiān)聽器將接收的存儲事件中的網(wǎng)絡(luò)數(shù)據(jù)、以及本監(jiān)聽器的標(biāo)識向本監(jiān)聽器所在指定URL的子頁面所對應(yīng)的網(wǎng)頁頁面發(fā)送;瀏覽器根據(jù)該次信息發(fā)送(PostMessage)事件,通知該網(wǎng)頁頁面中添加有窗口的消息事件監(jiān)聽功能的訂閱器102 ;該網(wǎng)頁頁面中的各訂閱器102根據(jù)瀏覽器發(fā)送的消息事件通知,獲取到該監(jiān)聽器發(fā)送的網(wǎng)絡(luò)數(shù)據(jù)和標(biāo)識后,若確認(rèn)其中攜帶的標(biāo)識與本訂閱器的標(biāo)識相同,則接收網(wǎng)絡(luò)數(shù)據(jù);否則,丟棄網(wǎng)絡(luò)數(shù)據(jù)。
[0096]S406:每個訂閱器102將其對應(yīng)的監(jiān)聽器103發(fā)送的網(wǎng)絡(luò)數(shù)據(jù)傳遞給其訂閱者101。
[0097]具體地,每個訂閱器102接收到監(jiān)聽器103發(fā)送的網(wǎng)絡(luò)數(shù)據(jù)后,將其傳遞給本訂閱器的訂閱者101,訂閱者101將接收的網(wǎng)絡(luò)數(shù)據(jù)在瀏覽器的網(wǎng)頁頁面中進(jìn)行顯示,以供用戶進(jìn)行瀏覽。
[0098]在實際應(yīng)用中,上述的訂閱器和監(jiān)聽器所實現(xiàn)功能的代碼可以放置在JS(Javascript)程序包中,在用戶通過瀏覽器訪問網(wǎng)頁頁面時,也隨之下載到本地;從而,訂閱者可以根據(jù)JS程序包中攜帶的訂閱器和監(jiān)聽器的類,創(chuàng)建訂閱器和監(jiān)聽器,以實現(xiàn)本發(fā)明。
[0099]本發(fā)明的技術(shù)方案中,由瀏覽器打開的網(wǎng)頁頁面中的各訂閱者分別創(chuàng)建的訂閱器中的主訂閱器向其訂閱者發(fā)送網(wǎng)絡(luò)請求指令,其訂閱者向服務(wù)器發(fā)送網(wǎng)絡(luò)請求并獲取服務(wù)器返回的網(wǎng)絡(luò)數(shù)據(jù);并由主訂閱器對應(yīng)的監(jiān)聽器將獲取的網(wǎng)絡(luò)數(shù)據(jù)存儲到指定URL的本地存儲空間中;每個監(jiān)聽器接收到瀏覽器發(fā)送的存儲事件后,將存儲事件中攜帶的網(wǎng)絡(luò)數(shù)據(jù)向?qū)?yīng)的訂閱器發(fā)送,并由訂閱器將網(wǎng)絡(luò)數(shù)據(jù)傳遞給其訂閱者。由此網(wǎng)頁頁面中的主訂閱器的訂閱者向服務(wù)器發(fā)送網(wǎng)絡(luò)請求、獲取服務(wù)器返回的網(wǎng)絡(luò)數(shù)據(jù),本網(wǎng)頁頁面以及其他網(wǎng)頁頁面中的各訂閱器的訂閱者可從本地存儲文件中獲取到該網(wǎng)絡(luò)數(shù)據(jù),而無需再向服務(wù)器發(fā)送網(wǎng)絡(luò)請求,實現(xiàn)了網(wǎng)頁頁面數(shù)據(jù)共享,從而節(jié)省了網(wǎng)絡(luò)資源,減輕了服務(wù)器的負(fù)載;尤其對于設(shè)置自動刷新的網(wǎng)站的網(wǎng)頁頁面,如新聞推送類網(wǎng)站的網(wǎng)頁頁面,將大大節(jié)省網(wǎng)絡(luò)資源,大大減輕服務(wù)器的負(fù)載。
[0100]本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,該程序可以存儲于一計算機可讀取存儲介質(zhì)中,如:R0M/RAM、磁碟、光盤等。
[0101]以上所述僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當(dāng)指出,對于本【技術(shù)領(lǐng)域】的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以作出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。
【權(quán)利要求】
1.一種網(wǎng)頁頁面數(shù)據(jù)共享方法,其特征在于,包括: 由瀏覽器打開的網(wǎng)頁頁面中的若干個訂閱者分別創(chuàng)建的訂閱器中的主訂閱器向其訂閱者發(fā)送網(wǎng)絡(luò)請求指令,其訂閱者在接收到所述網(wǎng)絡(luò)請求指令后將通過網(wǎng)絡(luò)獲取到的網(wǎng)絡(luò)數(shù)據(jù)返回至所述主訂閱器;其中,對于每個網(wǎng)頁頁面,該網(wǎng)頁頁面中的訂閱器還加載了一個該網(wǎng)頁頁面的指定統(tǒng)一資源定位符URL的子頁面,在該指定URL的子頁面中有為該網(wǎng)頁頁面的每個訂閱者的訂閱器對應(yīng)創(chuàng)建的監(jiān)聽器; 所述主訂閱器將接收的網(wǎng)絡(luò)數(shù)據(jù)發(fā)送給與之對應(yīng)的監(jiān)聽器,該監(jiān)聽器將接收到的網(wǎng)絡(luò)數(shù)據(jù)存儲到所述指定URL的本地存儲空間后,所述瀏覽器向每個監(jiān)聽器發(fā)送攜帶有所述網(wǎng)絡(luò)數(shù)據(jù)的存儲事件; 每個監(jiān)聽器將所述存儲事件中攜帶的網(wǎng)絡(luò)數(shù)據(jù)向本監(jiān)聽器對應(yīng)的訂閱器發(fā)送; 每個訂閱器將其對應(yīng)的監(jiān)聽器發(fā)送的網(wǎng)絡(luò)數(shù)據(jù)傳遞給其訂閱者。
2.如權(quán)利要求1所述的方法,其特征在于,在所述主訂閱器向其訂閱者發(fā)送網(wǎng)絡(luò)請求指令之前,還包括: 對于所述瀏覽器打開的每個網(wǎng)頁頁面,該網(wǎng)頁頁面中的每個訂閱器在創(chuàng)建后判斷是否已經(jīng)加載了一個指定URL的子頁面;若否,則加載一個指定URL的子頁面后,向其所在網(wǎng)頁頁面的指定URL的子頁面發(fā)送監(jiān)聽器創(chuàng)建指令、數(shù)據(jù)鍵值、以及本訂閱器的標(biāo)識;若是,則直接向其所在網(wǎng)頁頁面的指定URL的子頁面發(fā)送所述監(jiān)聽器創(chuàng)建指令、所述數(shù)據(jù)鍵值、以及本訂閱器的標(biāo)識; 其中,所述數(shù)據(jù)鍵值是根據(jù)本訂閱器的訂閱者所需數(shù)據(jù)采用哈希算法生成的。
3.如權(quán)利要求2所述的方法,其特征在于,在所述發(fā)送監(jiān)聽器創(chuàng)建指令、數(shù)據(jù)鍵值、以及本訂閱器的標(biāo)識后,還包括:` 所述指定URL的子頁面根據(jù)接收的監(jiān)聽器創(chuàng)建指令,創(chuàng)建一個標(biāo)識與接收的訂閱器的標(biāo)識相同的監(jiān)聽器,并將接收的數(shù)據(jù)鍵值傳送給該監(jiān)聽器,該監(jiān)聽器存儲接收的數(shù)據(jù)鍵值,并在初始化過程中添加存儲事件的監(jiān)聽功能。
4.如權(quán)利要求3所述的方法,其特征在于,在所述主訂閱器向其訂閱者發(fā)送網(wǎng)絡(luò)請求指令之前,還包括: 每個監(jiān)聽器定時查詢所述本地存儲空間中對應(yīng)本監(jiān)聽器存儲的數(shù)據(jù)鍵值的主鍵master_key參數(shù)是否過期; 若所述master_key參數(shù)未過期,則進(jìn)一步確定所述master_key參數(shù)中的監(jiān)聽器標(biāo)識與本監(jiān)聽器的標(biāo)識相同后,刷新所述maSter_key參數(shù)中的過期時間; 若所述master_key參數(shù)過期,則嘗試將該master_key參數(shù)中的監(jiān)聽器標(biāo)識設(shè)置為本監(jiān)聽器的標(biāo)識;若設(shè)置成功、且本監(jiān)聽器在設(shè)置之前為從監(jiān)聽器,則確定本監(jiān)聽器由從監(jiān)聽器升為主監(jiān)聽器;若設(shè)置不成功、且本監(jiān)聽器在設(shè)置之前為主監(jiān)聽器,則確定本監(jiān)聽器由主監(jiān)聽器降為從監(jiān)聽器; 由從變?yōu)橹鞯谋O(jiān)聽器通知對應(yīng)的訂閱器升為主訂閱器;由主變?yōu)閺牡谋O(jiān)聽器通知對應(yīng)的訂閱器降為從訂閱器。
5.如權(quán)利要求4所述的方法,其特征在于,所述監(jiān)聽器將接收到的網(wǎng)絡(luò)數(shù)據(jù)存儲到所述指定URL的本地存儲空間,具體包括: 在所述指定URL的本地存儲空間中,所述監(jiān)聽器將接收到的網(wǎng)絡(luò)數(shù)據(jù)與所述本地存儲空間中記錄的本監(jiān)聽器存儲的數(shù)據(jù)鍵值進(jìn)行對應(yīng)存儲;以及 所述存儲事件中還攜帶有與所述網(wǎng)絡(luò)數(shù)據(jù)對應(yīng)的數(shù)據(jù)鍵值;以及 所述每個監(jiān)聽器根據(jù)所述存儲事件中的數(shù)據(jù)向本監(jiān)聽器對應(yīng)的訂閱器進(jìn)行發(fā)送,具體包括: 每個監(jiān)聽器在接收到所述的存儲事件后,若接收的存儲事件中攜帶的數(shù)據(jù)鍵值與本監(jiān)聽器存儲的數(shù)據(jù)鍵值相等,則將所述存儲事件中攜帶的網(wǎng)絡(luò)數(shù)據(jù)向本監(jiān)聽器對應(yīng)的訂閱器發(fā)送。
6.如權(quán)利要求1-5任一所述的方法,其特征在于,所述訂閱器、監(jiān)聽器均在初始化過程中添加窗口的消息事件監(jiān)聽功能。
7.如權(quán)利要求1-5任一所述的方法,其特征在于,所述瀏覽器打開的網(wǎng)頁頁面為多個。
8.—種網(wǎng)頁頁面數(shù)據(jù)共享裝置,其特征在于,包括:瀏覽器打開的網(wǎng)頁頁面中的若干個訂閱者、由各訂閱者分別創(chuàng)建的訂閱器,以及對于每個網(wǎng)頁頁面,在該網(wǎng)頁頁面的指定統(tǒng)一資源定位符URL的子頁面中為該網(wǎng)頁頁面的每個訂閱者的訂閱器對應(yīng)創(chuàng)建的監(jiān)聽器;其中, 所述訂閱器中的主訂閱器用于向其訂閱者發(fā)送網(wǎng)絡(luò)請求指令,并將其訂閱者返回的網(wǎng)絡(luò)數(shù)據(jù)發(fā)送給與之對應(yīng)的監(jiān)聽器;以及所述訂閱器還將從監(jiān)聽器接收到的網(wǎng)絡(luò)數(shù)據(jù)傳遞給其訂閱者; 所述訂閱者用于接收到網(wǎng)絡(luò)請求指令后,通過網(wǎng)絡(luò)獲取網(wǎng)絡(luò)數(shù)據(jù)向其訂閱器返回;以及將從其訂閱器接收到的網(wǎng)絡(luò)數(shù)據(jù)在網(wǎng)頁頁面中進(jìn)行顯示; 所述監(jiān)聽器用于將從訂閱器接收到的網(wǎng)絡(luò)數(shù)據(jù)存儲到所述指定URL的本地存儲空間中;以及在接收到所述瀏覽器發(fā)送的攜帶有所述網(wǎng)絡(luò)數(shù)據(jù)的存儲事件后,將所述存儲事件中攜帶的網(wǎng)絡(luò)數(shù)據(jù)向本監(jiān)聽器對應(yīng)的訂閱器發(fā)送。
9.如權(quán)利要求8所述的裝置,其特征在于, 所述訂閱器還用于在本訂閱器創(chuàng)建后判斷是否已經(jīng)加載了一個指定URL的子頁面;若否,則加載一個指定URL的子頁面;之后,向該指定URL的子頁面發(fā)送監(jiān)聽器創(chuàng)建指令、數(shù)據(jù)鍵值、以及本訂閱器的標(biāo)識;該指定URL的子頁面根據(jù)接收的監(jiān)聽器創(chuàng)建指令,創(chuàng)建一個標(biāo)識與接收的訂閱器的標(biāo)識相同的監(jiān)聽器,并將接收的數(shù)據(jù)鍵值傳送給該監(jiān)聽器,該監(jiān)聽器存儲接收的數(shù)據(jù)鍵值,并在初始化過程中添加存儲事件的監(jiān)聽功能;其中,所述數(shù)據(jù)鍵值是根據(jù)本訂閱器的訂閱者所需數(shù)據(jù)采用哈希算法生成的。
10.如權(quán)利要求9所述的裝置,其特征在于, 所述監(jiān)聽器還用于定時查詢所述本地存儲空間中對應(yīng)本監(jiān)聽器存儲的數(shù)據(jù)鍵值的主鍵master_key參數(shù)是否過期;若所述master_key參數(shù)未過期,則進(jìn)一步確定所述master_key參數(shù)中的監(jiān)聽器標(biāo)識與本監(jiān)聽器的標(biāo)識相同后,刷新所述master_key參數(shù)中的過期時間;若所述master_key參數(shù)過期,則嘗試將該master_key參數(shù)中的監(jiān)聽器標(biāo)識設(shè)置為本監(jiān)聽器的標(biāo)識;若設(shè)置成功、且本監(jiān)聽器在設(shè)置之前為從監(jiān)聽器,則確定本監(jiān)聽器由從監(jiān)聽器升為主監(jiān)聽器;若設(shè)置不成功、且本監(jiān)聽器在設(shè)置之前為主監(jiān)聽器,則確定本監(jiān)聽器由主監(jiān)聽器降為從監(jiān)聽器;由從變?yōu)橹鞯谋O(jiān)聽器通知對應(yīng)的訂閱器升為主訂閱器;由主變?yōu)閺牡谋O(jiān)聽器通知對應(yīng)的訂閱器降為從訂閱器。
【文檔編號】G06F17/30GK103678549SQ201310648053
【公開日】2014年3月26日 申請日期:2013年12月4日 優(yōu)先權(quán)日:2013年12月4日
【發(fā)明者】杜大鵬, 楊文
申請人:新浪網(wǎng)技術(shù)(中國)有限公司