屬性 | 描述 |
---|---|
Socket.readyState |
只讀屬性readyState表示連接的狀態(tài)。有以下取值:
|
Socket.bufferedAmount |
只讀屬性bufferedAmount表示已經(jīng)使用 send() 方法排隊(duì)的 URF-8 文本字節(jié)數(shù)。 |
事件 | 事件處理程序 | 描述 |
---|---|---|
open | Socket.onopen | 建立 socket 連接時(shí)觸發(fā)這個(gè)事件。 |
message | Socket.onmessage | 客戶端從服務(wù)器接收數(shù)據(jù)時(shí)觸發(fā)。 |
error | Socket.onerror | 連接發(fā)生錯(cuò)誤時(shí)觸發(fā)。 |
close | Socket.onclose | 連接被關(guān)閉時(shí)觸發(fā)。 |
方法 | 描述 |
---|---|
Socket.send() |
send(data) 方法使用連接傳輸數(shù)據(jù)。 |
Socket.close() |
close() 方法用于終止任何現(xiàn)有連接。 |
服務(wù)器推送事件
傳統(tǒng)的 Web 應(yīng)用程序生成發(fā)送到 Web 服務(wù)器端的事件。比如,點(diǎn)擊一個(gè)鏈接會(huì)從服務(wù)器請(qǐng)求一個(gè)新頁面。
這種從 Web 瀏覽器到 Web 服務(wù)器的時(shí)間類型可以稱作客服端事件。
隨著 HTML5 的出現(xiàn),WHATWG Web Applications 1.0 引入了一個(gè)從 Web 服務(wù)器到 Web 瀏覽器的事件流,被稱作服務(wù)器推送事件(SSE)。使用 SSE 可以不停的將 DOM 事件推送到用戶的瀏覽器中。
這個(gè)事件流方法會(huì)打開一個(gè)到服務(wù)器的持久連接,新消息可用時(shí)發(fā)送數(shù)據(jù)到客戶端,從而不再需要持續(xù)的輪詢。
SSE Web 應(yīng)用程序
要在 Web 應(yīng)用程序中使用服務(wù)器推送事件,我們需要給文檔添加一個(gè) <eventsource>元素。
<eventsource> 元素的 src 屬性應(yīng)該指向一個(gè) URL,這個(gè) URL 應(yīng)該提供一個(gè) HTTP 持久連接用于發(fā)送包含事件的數(shù)據(jù)流。
這個(gè) URL 將會(huì)指向一個(gè)持續(xù)發(fā)送事件數(shù)據(jù)的 PHP,PERL 或者任意 Python 腳本。下面是一個(gè)簡單的期望獲得服務(wù)器時(shí)間的 Web 應(yīng)用程序示例。
SSE 服務(wù)器端腳本
服務(wù)器端腳本應(yīng)該發(fā)送 Content-type 頭指定類型為 text/event-stream,如下所示:
處理服務(wù)器推送事件
讓我們修改一下我們的 Web 應(yīng)用程序來處理服務(wù)器推送時(shí)間。下面是最終示例:
在測試服務(wù)器推送事件之前,建議你確保你的 Web 瀏覽器支持這一概念。
標(biāo)簽:內(nèi)蒙古 蚌埠 楊凌 撫順 德州 黃山 鶴崗 辛集
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《淺析HTML5的WebSocket與服務(wù)器推送事件》,本文關(guān)鍵詞 淺析,HTML5,的,WebSocket,與,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。