該用戶標(biāo)識和網(wǎng)頁應(yīng)用地址作為參數(shù),調(diào)用預(yù)設(shè)的瀏覽器后臺進(jìn)程的接口函數(shù)。該接口函數(shù)可基于javascript等腳本語言,由瀏覽器開發(fā)人員預(yù)先編寫并通過開發(fā)文檔公告給網(wǎng)頁應(yīng)用的第三方開發(fā)人員。
[0056]第三方開發(fā)人員在設(shè)計(jì)網(wǎng)頁應(yīng)用時(shí),可在用戶標(biāo)識錄入事件的事件響應(yīng)函數(shù)中調(diào)用該接口函數(shù),并將由用戶標(biāo)識錄入事件提取出相應(yīng)錄入的用戶標(biāo)識和網(wǎng)頁應(yīng)用地址作為參數(shù)傳遞給該接口函數(shù)。該接口函數(shù)被調(diào)用后,即可通過瀏覽器后臺進(jìn)程獲取用戶在登錄瀏覽器時(shí)輸入的客戶端標(biāo)識,并根據(jù)網(wǎng)頁應(yīng)用地址獲取該網(wǎng)頁應(yīng)用地址對應(yīng)的應(yīng)用標(biāo)識(可通過域名匹配查找得到)。
[0057]進(jìn)一步的,客戶端可通過調(diào)用瀏覽器后臺進(jìn)程的接口函數(shù)將客戶端標(biāo)識、應(yīng)用標(biāo)識和用戶標(biāo)識上傳推送服務(wù)器。
[0058]進(jìn)一步的,客戶端通過瀏覽器后臺進(jìn)程接收返回的令牌信息,并將其作為接口函數(shù)的回調(diào)值返回給網(wǎng)頁應(yīng)用。
[0059]如上例中,瀏覽器后臺進(jìn)程的接口函數(shù)在接收輸入的用戶標(biāo)識和網(wǎng)頁應(yīng)用地址作為輸入?yún)?shù)被調(diào)用后,先獲取到客戶端標(biāo)識和應(yīng)用標(biāo)識,然后將用戶標(biāo)識、客戶端標(biāo)識和應(yīng)用標(biāo)識上傳推送服務(wù)器,且該接口函數(shù)的返回值即為推送服務(wù)器返回的令牌信息。該接口函數(shù)在返回回調(diào)值(令牌信息)后,可將該令牌信息和用戶標(biāo)識上傳給該網(wǎng)頁應(yīng)用對應(yīng)的應(yīng)用服務(wù)器。應(yīng)用服務(wù)器可以鍵值對的形式存儲上傳的用戶標(biāo)識和令牌信息。
[0060]在本實(shí)施例中,同時(shí)參考圖3,令牌信息和消息信息則由應(yīng)用服務(wù)器在接收到消息推送指令后將其發(fā)送給推送服務(wù)器,其過程為:
[0061]應(yīng)用服務(wù)器接收消息推送指令,獲取消息推送指令對應(yīng)的用戶標(biāo)識及相應(yīng)的消息信息,獲取與用戶標(biāo)識對應(yīng)的令牌信息,將令牌信息和消息信息發(fā)送給推送服務(wù)器。
[0062]消息推送指令可由應(yīng)用服務(wù)器自動生成,也可由用戶通過操作客戶端瀏覽器上的網(wǎng)頁應(yīng)用進(jìn)行觸發(fā)。例如,若應(yīng)用服務(wù)器上設(shè)置有定時(shí)推送的計(jì)劃任務(wù),則可在定時(shí)器到時(shí)時(shí),生成消息推送指令。用戶也可手動點(diǎn)擊網(wǎng)頁應(yīng)用上的新聞推送按鈕來觸發(fā)消息推送指令。
[0063]應(yīng)用服務(wù)器在接收到消息推送指令后,即可根據(jù)前述存儲的鍵值對進(jìn)行查找,獲取與用戶標(biāo)識對應(yīng)的令牌信息和消息信息(即需要推送給用戶所在的客戶端的消息內(nèi)容)。
[0064]推送服務(wù)器可對外公開固定的域名和端口,并通過守護(hù)進(jìn)程監(jiān)聽該端口。網(wǎng)頁應(yīng)用的應(yīng)用服務(wù)器可根據(jù)該域名和端口向推送服務(wù)器發(fā)送數(shù)據(jù)。推送服務(wù)器的守護(hù)進(jìn)程即可接收該數(shù)據(jù)。
[0065]例如,若用戶A在新聞?lì)愋偷木W(wǎng)頁應(yīng)用上設(shè)置了定時(shí)推送新聞的定時(shí)器功能,則該網(wǎng)頁應(yīng)用在定時(shí)到達(dá)時(shí),查找與用戶A對應(yīng)的用戶偏好,獲取相應(yīng)的新聞作為消息信息,并根據(jù)用戶A的賬號在鍵值對中查找相應(yīng)的令牌信息,然后將該新聞和令牌信息發(fā)送給推送服務(wù)器。
[0066]在本實(shí)施例中,推送服務(wù)器在接收到應(yīng)用服務(wù)器發(fā)送來的消息信息和令牌信息之后,可通過瀏覽器長連接將消息信息和應(yīng)用標(biāo)識推送給客戶端;客戶端可通過瀏覽器后臺進(jìn)程接收消息信息和應(yīng)用標(biāo)識。
[0067]如前,用戶可在客戶端上通過登錄瀏覽器與推送服務(wù)器建立長連接,并可通過發(fā)送心跳包保持該長連接。由于該連接由瀏覽器后臺進(jìn)程創(chuàng)建,因此為有狀態(tài)(Statefull)的連接。推送服務(wù)器可根據(jù)登錄的客戶端標(biāo)識查找到該連接,從而通過該長連接將消息信息和應(yīng)用標(biāo)識推送給客戶端。
[0068]在本實(shí)施例中,推送服務(wù)器還可獲取客戶端的在線狀態(tài),根據(jù)在線狀態(tài)判斷客戶端是否在線,若是,則將消息信息和應(yīng)用標(biāo)識推送給客戶端。優(yōu)選的,推送服務(wù)器獲取與客戶端的瀏覽器長連接的連接狀態(tài)作為在線狀態(tài)。
[0069]也就是說,推送服務(wù)器可根據(jù)用戶在客戶端登錄瀏覽器時(shí)輸入的客戶端標(biāo)識獲取與該客戶端對應(yīng)的長連接的連接狀態(tài),若連接處于保持中,則表示該瀏覽器正在該客戶端上處于運(yùn)行狀態(tài),即在線,可將消息信息和應(yīng)用標(biāo)識通過該長連接推送給該客戶端,客戶端即可在瀏覽器中查找到與該應(yīng)用標(biāo)識對應(yīng)的網(wǎng)頁應(yīng)用,然后將該消息信息傳遞給該網(wǎng)頁應(yīng)用,瀏覽器即可在該網(wǎng)頁應(yīng)用上展示該消息信息。
[0070]進(jìn)一步的,推送服務(wù)器判斷得到客戶端離線(不在線),則可將消息信息和令牌信息存儲在緩存中。
[0071]推送服務(wù)器還可接收長連接請求,并與長連接請求對應(yīng)的客戶端建立瀏覽器長連接,并通過瀏覽器長連接接收上傳的用戶標(biāo)識。推送服務(wù)器還可在緩存中獲取與用戶標(biāo)識對應(yīng)的令牌信息,并獲取該令牌信息對應(yīng)的消息信息,將消息信息推送給該客戶端。
[0072]也就是說,若推送服務(wù)器發(fā)現(xiàn)與客戶端的長連接已經(jīng)斷開,用戶可能已經(jīng)退出瀏覽器應(yīng)用或是處于網(wǎng)絡(luò)斷開狀態(tài),則將消息信息緩存。而待到用戶通過在客戶端上重新啟動瀏覽器應(yīng)用,并使用相同的客戶端標(biāo)識登錄推送服務(wù)器(即向推送服務(wù)器發(fā)起長連接請求)后,推送服務(wù)器可由緩存中將緩存的消息信息和令牌信息取出,然后將其推送給客戶端。
[0073]需要說明的是,在此應(yīng)用場景中,客戶端標(biāo)識在推送服務(wù)器接收到消息信息和由緩存中取出該消息信息時(shí)對應(yīng)的客戶端可以不同。例如,若用戶在客戶端A上登錄瀏覽器應(yīng)用,運(yùn)行一段時(shí)間后斷開網(wǎng)絡(luò)連接,此時(shí),客戶端標(biāo)識對應(yīng)的客戶端仍然為客戶端A ;若用戶在客戶端B上再次登陸瀏覽器應(yīng)用,則推送服務(wù)器與客戶端B建立長鏈接后,客戶端標(biāo)識即對應(yīng)客戶端B。也就是說,即使用戶切換客戶端,仍然能夠接收到推送的消息信息。
[0074]在本實(shí)施例中,推送服務(wù)器還可解析令牌信息得到用戶標(biāo)識,并通過對用戶標(biāo)識進(jìn)行校驗(yàn)判斷令牌信息是否有效,若是,則根據(jù)客戶端標(biāo)識獲取相應(yīng)的客戶端。
[0075]推送服務(wù)器可將解析令牌信息得到的用戶標(biāo)識與生成該令牌信息時(shí)接收到的客戶端上傳的用戶標(biāo)識(可將其在推送服務(wù)器與生成的令牌信息以鍵值對的形式緩存)進(jìn)行比較,若相同,則校驗(yàn)通過;否則,校驗(yàn)失敗。若校驗(yàn)失敗,則消息信息為錯(cuò)誤消息,可將其丟棄。
[0076]在本實(shí)施例中,推送服務(wù)器還可獲取消息信息包含的類型值,判斷類型值是否合法,若是,則將消息信息和應(yīng)用標(biāo)識推送給客戶端。
[0077]消息信息包含的類型值即為推送的消息信息的類型,可包括任務(wù)欄消息、彈窗消息、dock (界面中用于啟動、切換運(yùn)行中的應(yīng)用程序的一種功能界面)消息等。如圖4、圖5和圖6所示,分別展示了任務(wù)欄消息、彈窗消息和dock消息的界面。
[0078]推送服務(wù)器可通過與客戶端的長連接獲取客戶端的參數(shù)信息,并根據(jù)該參數(shù)信息判斷類型值是否合法。例如,若客戶端為android或1s系統(tǒng),則客戶端支持任務(wù)欄消息,任務(wù)欄消息類型合法;若客戶端為windows操作系統(tǒng),則客戶端不支持任務(wù)欄消息,任務(wù)欄消息類型不合法。
[0079]在一個(gè)實(shí)施例中,如圖2所示,一種網(wǎng)頁應(yīng)用消息推送系統(tǒng),包括推送服務(wù)器10和客戶端20,其中:
[0080]推送服務(wù)器10用于接收應(yīng)用服務(wù)器30發(fā)送的令牌信息和消息信息,解析令牌信息得到客戶端標(biāo)識和應(yīng)用標(biāo)識,根據(jù)客戶端標(biāo)識獲取相應(yīng)的客戶端20,并將消息信息和應(yīng)用標(biāo)識推送給客戶端20。
[0081]客戶端20用于根據(jù)應(yīng)用標(biāo)識獲取相應(yīng)的網(wǎng)頁應(yīng)用,并根據(jù)網(wǎng)頁應(yīng)用展示消息信肩、O
[0082]在本實(shí)施例中,客戶端20還用于獲取客戶端標(biāo)識、網(wǎng)頁應(yīng)用的應(yīng)用標(biāo)識和與網(wǎng)頁應(yīng)用對應(yīng)的用戶標(biāo)識,將客戶端標(biāo)識、應(yīng)用標(biāo)識和用戶標(biāo)識上傳推送服務(wù)器10,并接收返回的令牌信息,通過網(wǎng)頁應(yīng)用將令牌信息和用戶標(biāo)識上傳應(yīng)用服務(wù)器30 ;且返回的令牌信息由推送服務(wù)器10根據(jù)上傳的客戶端標(biāo)識、應(yīng)用標(biāo)識和用戶標(biāo)識加密生成。
[0083]在本實(shí)施例中,客戶端20還用于通過調(diào)用瀏覽器后臺進(jìn)程的接口函數(shù)將客戶端標(biāo)識、應(yīng)用標(biāo)識和用戶標(biāo)識上傳推送服務(wù)器。
[0084]在本實(shí)施例中,客戶端20還用于通過瀏覽器后臺進(jìn)程接收返回的令牌信息,并將其作為接口函數(shù)的回調(diào)值返回給網(wǎng)頁應(yīng)用。
[0085]在本實(shí)施例中,客戶端20還用于獲取網(wǎng)頁應(yīng)用的用戶標(biāo)識錄入事件,獲取用戶標(biāo)識錄入事件對應(yīng)的用戶標(biāo)識,通過瀏覽器后臺進(jìn)程獲取客戶端標(biāo)識和網(wǎng)頁應(yīng)用的應(yīng)用標(biāo)識。
[0086]在本實(shí)施例中,推送服務(wù)器10還用于通過瀏覽器長連接將消息信息和應(yīng)用標(biāo)識推送給客戶端。
[0087]客戶端20還