内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

如何理解HTML5的WebSocket與服務(wù)器推送事件

本篇文章為大家展示了如何理解HTML5的WebSocket與服務(wù)器推送事件,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

專注于為中小企業(yè)提供網(wǎng)站制作、網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)平城免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千余家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

WebSockets

Web Sockets 是用于 Web 應(yīng)用程序的新一代雙向通信技術(shù),運行在單一套接字之上,它通過 JavaScript 接口暴漏在 HTML5 兼容的瀏覽器中。

一旦取得 Web 服務(wù)器上的 Web Socket 連接之后,就可以通過調(diào)用 send() 方法從瀏覽器發(fā)送數(shù)據(jù)到服務(wù)器上,通過 onmessage 事件處理程序從服務(wù)器接收數(shù)據(jù)到瀏覽器中。

下面是創(chuàng)建一個新的 WebSocket 對象的 API。

JavaScript Code復(fù)制內(nèi)容到剪貼板

  1. var Socket = new WebSocket(url, [protocal] );  

第一個參數(shù) url 用于指定要連接的 URL。第二個屬性 - 端口是可選的,如果提供,就會指定一個服務(wù)器必須支持連接成功的子協(xié)議。

WebSocket 屬性
下面是 WebSocket 對象的屬性。假定我們已經(jīng)創(chuàng)建了上述的 Socket 對象:

屬性描述
Socket.readyState

只讀屬性readyState表示連接的狀態(tài)。有以下取值:

  1. 0 表示連接尚未建立。

  2. 1 表示連接已建立,可以進(jìn)行通信。

  3. 2 表示連接正在進(jìn)行關(guān)閉握手。

  4. 3 表示連接已經(jīng)關(guān)閉或者連接不能打開。

Socket.bufferedAmount

只讀屬性bufferedAmount表示已經(jīng)使用 send() 方法排隊的 URF-8 文本字節(jié)數(shù)。


WebSocket 事件
下面是 WebSocket 對象相關(guān)的事件。假定我們已經(jīng)創(chuàng)建了上述的 Socket 對象:

事件事件處理程序描述
openSocket.onopen建立 socket 連接時觸發(fā)這個事件。
messageSocket.onmessage客戶端從服務(wù)器接收數(shù)據(jù)時觸發(fā)。
errorSocket.onerror連接發(fā)生錯誤時觸發(fā)。
closeSocket.onclose連接被關(guān)閉時觸發(fā)。


WebSocket 方法
下面是 WebSocket 對象相關(guān)的方法。假定我們已經(jīng)創(chuàng)建了上述的 Socket 對象:

方法描述
Socket.send()

send(data) 方法使用連接傳輸數(shù)據(jù)。

Socket.close()

close() 方法用于終止任何現(xiàn)有連接。

服務(wù)器推送事件
傳統(tǒng)的 Web 應(yīng)用程序生成發(fā)送到 Web 服務(wù)器端的事件。比如,點擊一個鏈接會從服務(wù)器請求一個新頁面。

這種從 Web 瀏覽器到 Web 服務(wù)器的時間類型可以稱作客服端事件。

隨著 HTML5 的出現(xiàn),WHATWG Web Applications 1.0 引入了一個從 Web 服務(wù)器到 Web 瀏覽器的事件流,被稱作服務(wù)器推送事件(SSE)。使用 SSE 可以不停的將 DOM 事件推送到用戶的瀏覽器中。

這個事件流方法會打開一個到服務(wù)器的持久連接,新消息可用時發(fā)送數(shù)據(jù)到客戶端,從而不再需要持續(xù)的輪詢。

SSE Web 應(yīng)用程序
要在 Web 應(yīng)用程序中使用服務(wù)器推送事件,我們需要給文檔添加一個 <eventsource>元素。

<eventsource> 元素的 src 屬性應(yīng)該指向一個 URL,這個 URL 應(yīng)該提供一個 HTTP 持久連接用于發(fā)送包含事件的數(shù)據(jù)流。

這個 URL 將會指向一個持續(xù)發(fā)送事件數(shù)據(jù)的 PHP,PERL 或者任意 Python 腳本。下面是一個簡單的期望獲得服務(wù)器時間的 Web 應(yīng)用程序示例。

XML/HTML Code復(fù)制內(nèi)容到剪貼板

  1. <!DOCTYPE HTML>  

  2. <html>  

  3. <head>  

  4. <script type="text/javascript">  

  5. /* Define event handling logic here */   

  6. </script>  

  7. </head>  

  8. <body>  

  9. <div id="sse">  

  10.    <eventsource src="/cgi-bin/ticker.cgi" />  

  11. </div>  

  12. <div id="ticker">  

  13.    <TIME>  

  14. </div>  

  15. </body>  

  16. </html>  

SSE 服務(wù)器端腳本
服務(wù)器端腳本應(yīng)該發(fā)送 Content-type 頭指定類型為 text/event-stream,如下所示:

代碼如下:

print "Content-Type: text/event-stream\n\n";


設(shè)置 Content-type 之后,服務(wù)器端腳本將發(fā)送一個后面緊跟事件名稱的 Event: 標(biāo)簽。下面的示例將會發(fā)送一個以換行符結(jié)束的 Server-Time 作為事件名稱。

代碼如下:

print "Event: server-time\n";


最后一步是使用 Data: 標(biāo)簽發(fā)送事件數(shù)據(jù),緊隨其后的是以換行符結(jié)束的整數(shù)字符串值,如下所示:

代碼如下:

$time = localtime();
print "Data: $time\n";


下面是用 perl 編寫的完整 ticker.cgi:

代碼如下:


#!/usr/bin/perl
print "Content-Type: text/event-stream\n\n";
while(true){
  print "Event: server-time\n";
  $time = localtime();
  print "Data: $time\n";
  sleep(5);

處理服務(wù)器推送事件
讓我們修改一下我們的 Web 應(yīng)用程序來處理服務(wù)器推送時間。下面是最終示例:

XML/HTML Code復(fù)制內(nèi)容到剪貼板

  1. <!DOCTYPE HTML>  

  2. <html>  

  3. <head>  

  4. <script type="text/javascript">  

  5.    document.getElementsByTagName("eventsource")[0].   

  6.             addEventListener("server-time", eventHandler, false);   

  7.    function eventHandler(event)   

  8.    {   

  9.        // Alert time sent by the server   

  10.        document.querySelector('#ticker').innerHTML = event.data;   

  11.   

  12.    }   

  13. </script>  

  14. </head>  

  15. <body>  

  16. <div id="sse">  

  17.    <eventsource src="/cgi-bin/ticker.cgi" />  

  18. </div>  

  19. <div id="ticker" name="ticker">  

  20.    [TIME]   

  21. </div>  

  22. </body>  

  23. </html>  

在測試服務(wù)器推送事件之前,建議你確保你的 Web 瀏覽器支持這一概念。

上述內(nèi)容就是如何理解HTML5的WebSocket與服務(wù)器推送事件,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

分享標(biāo)題:如何理解HTML5的WebSocket與服務(wù)器推送事件
文章分享:http://www.rwnh.cn/article34/ggddpe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)品牌網(wǎng)站設(shè)計、關(guān)鍵詞優(yōu)化、網(wǎng)站策劃、網(wǎng)站導(dǎo)航、網(wǎng)站設(shè)計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化
凤城市| 昭苏县| 枣庄市| 龙游县| 托克逊县| 防城港市| 黑山县| 耿马| 巩留县| 谷城县| 华容县| 桂平市| 南木林县| 桃源县| 富川| 永登县| 屏东县| 安平县| 彭州市| 大田县| 双鸭山市| 昌黎县| 深圳市| 宁安市| 曲松县| 泸溪县| 台中县| 德格县| 且末县| 道真| 年辖:市辖区| 辉县市| 新化县| 德昌县| 荔浦县| 姚安县| 乌审旗| 垫江县| 莱芜市| 明溪县| 澎湖县|