婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 淺析HTML5的WebSocket與服務器推送事件

淺析HTML5的WebSocket與服務器推送事件

熱門標簽:外呼線穩定線路 申請400電話流程簡介 南通數據外呼系統推廣 pageadm實現地圖標注 邢臺縣地圖標注app 地圖標注位置能賺錢嗎 阜陽企業外呼系統 呼和浩特外呼電銷系統排名 外呼系統電話怎么投訴

WebSockets

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

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

下面是創建一個新的 WebSocket 對象的 API。

JavaScript Code復制內容到剪貼板
  1. var Socket = new WebSocket(url, [protocal] );  

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

WebSocket 屬性
下面是 WebSocket 對象的屬性。假定我們已經創建了上述的 Socket 對象:

屬性 描述
Socket.readyState

只讀屬性readyState表示連接的狀態。有以下取值:

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

  2. 1 表示連接已建立,可以進行通信。

  3. 2 表示連接正在進行關閉握手。

  4. 3 表示連接已經關閉或者連接不能打開。

Socket.bufferedAmount

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


WebSocket 事件
下面是 WebSocket 對象相關的事件。假定我們已經創建了上述的 Socket 對象:
事件 事件處理程序 描述
open Socket.onopen 建立 socket 連接時觸發這個事件。
message Socket.onmessage 客戶端從服務器接收數據時觸發。
error Socket.onerror 連接發生錯誤時觸發。
close Socket.onclose 連接被關閉時觸發。

WebSocket 方法
下面是 WebSocket 對象相關的方法。假定我們已經創建了上述的 Socket 對象:
方法 描述
Socket.send()

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

Socket.close()

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

服務器推送事件
傳統的 Web 應用程序生成發送到 Web 服務器端的事件。比如,點擊一個鏈接會從服務器請求一個新頁面。

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

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

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

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

<eventsource> 元素的 src 屬性應該指向一個 URL,這個 URL 應該提供一個 HTTP 持久連接用于發送包含事件的數據流。

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

XML/HTML Code復制內容到剪貼板
  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 服務器端腳本
服務器端腳本應該發送 Content-type 頭指定類型為 text/event-stream,如下所示:


復制代碼
代碼如下:
print "Content-Type: text/event-stream\n\n";

設置 Content-type 之后,服務器端腳本將發送一個后面緊跟事件名稱的 Event: 標簽。下面的示例將會發送一個以換行符結束的 Server-Time 作為事件名稱。


復制代碼
代碼如下:
print "Event: server-time\n";

最后一步是使用 Data: 標簽發送事件數據,緊隨其后的是以換行符結束的整數字符串值,如下所示:


復制代碼
代碼如下:
$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);

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

XML/HTML Code復制內容到剪貼板
  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>  

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

標簽:內蒙古 蚌埠 楊凌 撫順 德州 黃山 鶴崗 辛集

巨人網絡通訊聲明:本文標題《淺析HTML5的WebSocket與服務器推送事件》,本文關鍵詞  淺析,HTML5,的,WebSocket,與,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《淺析HTML5的WebSocket與服務器推送事件》相關的同類信息!
  • 本頁收集關于淺析HTML5的WebSocket與服務器推送事件的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 玉溪市| 韩城市| 唐山市| 望江县| 西乌珠穆沁旗| 汽车| 进贤县| 承德县| 遂溪县| 股票| 西峡县| 波密县| 阳谷县| 东乌珠穆沁旗| 信宜市| 望城县| 略阳县| 鄂托克前旗| 肇源县| 永顺县| 武汉市| 建阳市| 建水县| 定西市| 澳门| 惠州市| 霍州市| 呼和浩特市| 长岭县| 大安市| 武汉市| 武安市| 无极县| 康保县| 四川省| 巴青县| 宝鸡市| 大英县| 江都市| 昌邑市| 玉林市|