目錄
HTML5 WebSocket / Geolocation 追蹤器
首頁 web前端 H5教程 html5的websockets全雙工通訊詳解學習範例_html5教學技巧

html5的websockets全雙工通訊詳解學習範例_html5教學技巧

May 16, 2016 pm 03:48 PM
html5 websockets

目前即時Web應用的實現方式,大部分是圍繞輪詢和其他伺服器端推送技術展開的,其中最著名的是Comet。 Comet技術可以讓伺服器主動以非同步方式向客戶端推送資料。

使用輪詢時,瀏覽器定期發送HTTP請求,並隨即接收回應;使用長輪詢時,瀏覽器向伺服器發送請求,伺服器會在一段時間內將其保持在開啟狀態;使用串流解決方案時,瀏覽器會發送完整的HTTP請求,但伺服器會傳送並保持一個處於開啟狀態的回應,該回應持續更新並無限期處於開啟狀態。

上述的三個方法,在發送即時數據時都會涉及到HTTP請求和回應包頭,且包含大量額外的、不必要的報頭數據,會造成傳輸延遲。

一、解讀HTML5 WebSockets

1、WebSocket握手

為了建立WebSocket通信,客戶端和伺服器在初始握手時,將HTTP協定升級到WebSocket協定。一旦連線建立成功,就可以在全雙工模式下在客戶端和伺服器之間來回傳送WebSocket訊息。

註:在網路中,每個訊息以0x00位元組開頭,以0xFF結尾,中間資料採用UTF-8編碼格式。

2、WebSocket介面

除了WebSocket協定的定義之外,還定義了用於JavaScript應用程式的WebSocket介面。

複製程式碼
程式碼如下:

interm URL;
//就緒狀態
const unsigned short CONNECTING = 0;
const unsigned short OPEN = 1;
const unsigned short CLOSED = 2; >readonly attribute unsigned short bufferedAmount;
//網路
attribute Function onopen;
attribute Function onmessage;
attribute Function onclose; ();
};
WebSocket implements EventTarget;




注意:ws://和wss://前綴分別表示WebSocket連線和安全的WebSocket連線。
二、HTML5 WebSockets API

本節討論HTML5 WebSockets的使用方法

1、偵測瀏覽器是否支援

透過window.WebSocket來判斷瀏覽器是否支援。

2、API的基本用法

a. WebSocket物件的建立以及與WebSocket伺服器的連線

複製代碼

代碼如下:url = "ws://localhost 8080/echo";ws = new WebSocket(url);

b. 新增事件監聽器

WebSocket遵循非同步程式設計模型,開啟socket後,只需等待事件發生,而不需主動向伺服器輪詢,因此需要加入回呼函數來監聽事件。
WebSocket物件有三個事件:open、close和message。當連線建立時觸發open事件,當收到訊息時觸發message事件,當WebSocket連線關閉時觸發close事件。

複製程式碼

程式碼如下:ws.onopen = function(){ log("open");
}
ws.onmessage = function(){
log(e.data);
}
ws.onclose = function(){
log("closed");
}



c. 傳送訊息

當socket處於開啟狀態(即在呼叫onopen監聽程式之後,在呼叫onclose監聽程式之前),可以使用send方法傳送訊息。
ws.send("Hello World");

三、HTML5 WebSockets 應用範例

本節將結合前面所述的Geolocation介面來建立一個直接在Web頁面中計算距離的應用程式。

1、寫HTML檔

複製程式碼

程式碼如下:

HTML5 WebSocket / Geolocation 追蹤器

HTML5 WebSocket / Geolocation 追蹤器

Geolocation:

你的瀏覽器不支援HTML5 Geolocation

WebSocket:

你的瀏覽器不支援HTML5 Web Sockets


2、新增WebSocket程式碼


複製程式碼
程式碼如下:

function loadDemo()>De /確保瀏覽器支援WebSocket
if(window.WebSocket){
url = "ws://localhost:8080";//broadcast WebSocket伺服器位置
ws = new WebSocket(url);
ws.onopen = function(){
updateSocketStatus("連線已建立");
}
ws.onmessage = function(e){
updateSocketeStatus("更新位置資料:" dataReturned( e.data));
}
}
}

3、新增Geolocation代碼


複製程式碼程式碼如下:
var geo;
if
if
if
if
if
if
if
if
if
if
if
.geolocation){
geo = navigator.geolocation;
updateGeolocationStatus("瀏覽器支援HTML5 Geolocation");
}

geo.watchPosition(updateLocation,handleLocationError,{maximumAge:20000});//每20s更新一次

function updateLocation(position){

var latitude = position.coords.latitude;

var longitude = position.coords.longitude;

var timestamp = position.Statpampate;更新時間:" timestamp);

var toSend = JSON.stringify([myId,latitude,longitude]);
sendMyLocation(toSend);

}
4、合併所有內容
複製程式碼程式碼如下:

HTML5 WebSocket / Geolocation 追踪器

HTML5 WebSocket / Geolocation 追踪器

Geolocation:

你的浏览器不支持HTML5 Geolocation

WebSocket:

你的浏览器不支持HTML5 Web Sockets

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1317
25
PHP教程
1268
29
C# 教程
1245
24
HTML 中的表格邊框 HTML 中的表格邊框 Sep 04, 2024 pm 04:49 PM

HTML 表格邊框指南。在這裡,我們以 HTML 中的表格邊框為例,討論定義表格邊框的多種方法。

HTML 中的巢狀表 HTML 中的巢狀表 Sep 04, 2024 pm 04:49 PM

這是 HTML 中巢狀表的指南。這裡我們討論如何在表中建立表格以及對應的範例。

HTML 左邊距 HTML 左邊距 Sep 04, 2024 pm 04:48 PM

HTML 左邊距指南。在這裡,我們討論 HTML margin-left 的簡要概述及其範例及其程式碼實作。

HTML 表格佈局 HTML 表格佈局 Sep 04, 2024 pm 04:54 PM

HTML 表格佈局指南。在這裡,我們詳細討論 HTML 表格佈局的值以及範例和輸出。

HTML 輸入佔位符 HTML 輸入佔位符 Sep 04, 2024 pm 04:54 PM

HTML 輸入佔位符指南。在這裡,我們討論 HTML 輸入佔位符的範例以及程式碼和輸出。

HTML 有序列表 HTML 有序列表 Sep 04, 2024 pm 04:43 PM

HTML 有序列表指南。在這裡我們也分別討論了 HTML 有序列表和類型的介紹以及它們的範例

HTML onclick 按鈕 HTML onclick 按鈕 Sep 04, 2024 pm 04:49 PM

HTML onclick 按鈕指南。這裡我們分別討論它們的介紹、工作原理、範例以及各個事件中的onclick事件。

在 HTML 中移動文字 在 HTML 中移動文字 Sep 04, 2024 pm 04:45 PM

HTML 中的文字移動指南。在這裡我們討論一下marquee標籤如何使用語法和實作範例。

See all articles