国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > HTML > 正文

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

2020-03-24 18:22:23
字體:
來源:轉載
供稿:網友
WebSocketsWeb Sockets 是用于 Web html' target='_blank'>應用程序的新一代雙向通信技術,運行在單一套接字之上,它通過 JavaScript 接口暴漏在 HTML5 兼容瀏覽器中。一旦取得 Web 服務器上的 Web Socket 連接之后,就可以通過調用 send() 方法從瀏覽器發送數據到服務器上,通過 onmessage 事件處理程序從服務器接收數據到瀏覽器中。下面是創建一個新的 WebSocket 對象的 API。JavaScript Code復制內容到剪貼板
第一個參數 url 用于指定要連接的 URL。第二個屬性 - 端口是可選的,如果提供,就會指定一個服務器必須支持連接成功的子協議。WebSocket 屬性
下面是 WebSocket 對象的屬性。假定我們已經創建了上述的 Socket 對象:


WebSocket 事件
下面是 WebSocket 對象相關的事件。假定我們已經創建了上述的 Socket 對象:


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

服務器推送事件
傳統的 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復制內容到剪貼板
scripttype= text/javascript /*Defineeventhandlinglogichere*/ /script /head body divid= sse eventsourcesrc= /cgi-bin/ticker.cgi / /div divid= ticker TIME /div /body /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復制內容到剪貼板
scripttype= text/javascript document.getElementsByTagName( eventsource )[0]. addEventListener( server-time ,eventHandler,false); functioneventHandler(event) { //Alerttimesentbytheserver document.querySelector('#ticker').innerHTML=event.data; } /script /head body divid= sse eventsourcesrc= /cgi-bin/ticker.cgi / /div divid= ticker name= ticker [TIME] /div /body /htmlhtml教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 安岳县| 南华县| 北海市| 当阳市| 内乡县| 塘沽区| 宣武区| 建宁县| 弥勒县| 饶河县| 冀州市| 军事| 青川县| 阿巴嘎旗| 敦化市| 北安市| 城步| 泰来县| 曲靖市| 泾川县| 武乡县| 寿宁县| 海丰县| 武穴市| 吉水县| 宝应县| 新干县| 丘北县| 上思县| 葫芦岛市| 抚顺县| 乐都县| 河源市| 曲水县| 青岛市| 新干县| 辽中县| 乌鲁木齐市| 嵊泗县| 巩义市| 石狮市|