首頁 web前端 H5教程 帶你認識HTML5中的WebSocket

帶你認識HTML5中的WebSocket

May 26, 2017 pm 03:34 PM
html5 websocket

認識 HTML5 的 WebSocket

在 HTML5 規格中,我最喜歡的Web技術就是快速變得流行的 WebSocket API。 WebSocket 提供了一個受歡迎的技術,以取代我們過去幾年一直在使用的Ajax技術。這個新的API提供了一個方法,從客戶端使用簡單的語法有效地推動訊息到伺服器。讓我們來看看 HTML5 的 WebSocket API:它可用於客戶端、伺服器端。而且有一個優秀的第三方API,名為Socket.IO。

一、HTML5 中的 WebSocket API 是個什麼東東?

WebSocket API是下一代客戶端-伺服器的非同步通訊方法。該通訊取代了單一的TCP套接字,使用ws或wss協議,可用於任意的客戶端和伺服器程式。 WebSocket目前由W3C進行標準化。 WebSocket已經受到Firefox 4、Chrome 4、Opera 10.70以及Safari 5等瀏覽器的支援。

WebSocket API最偉大之處在於伺服器和客戶端可以在給定的時間範圍內的任意時刻,相互推送訊息。 WebSocket並不限於以Ajax(或XHR)方式通信,因為Ajax技術需要客戶端發起請求,而WebSocket伺服器和客戶端可以彼此相互推送訊息;XHR受到網域的限制,而WebSocket允許跨網域通訊。

Ajax技術很聰明的一點是沒有設計要使用的方式。 WebSocket為指定目標創建,用於雙向推播訊息。

二、HTML5 中的 WebSocket API 的用法

只專注於客戶端的API,因為每個伺服器端語言都有自己的API。下面的程式碼片段是開啟一個連接,為連接建立事件監聽器,斷開連接,訊息時間,發送訊息返回伺服器,關閉連接。

程式碼如下:

// 创建一个Socket实例
var socket = new WebSocket('ws://localhost:8080');
// 打开Socket 
socket.onopen = function(event){
  // 发送一个初始化消息
  socket.send('I am the client and I\'m listening!');
  // 监听消息
  socket.onmessage = function(event){
    console.log('Client received a message',event);
  };
  // 监听Socket的关闭
  socket.onclose = function(event){
    console.log('Client notified socket has closed',event);
  };
  // 关闭Socket.... 
  //socket.close()
};
登入後複製

讓我們來看看上面的初始化片段。參數為URL,ws表示WebSocket協定。 onopen、onclose和onmessage方法把事件連接到Socket實例。每個方法都提供了一個事件,以表示Socket的狀態。

onmessage事件提供了一個data屬性,它可以包含訊息的Body部分。訊息的Body部分必須是一個字串,可以進行序列化/反序列化操作,以便傳遞更多的資料。

WebSocket的語法非常簡單,使用WebSockets是難以置信的容易…除非客戶端不支援WebSocket。 IE瀏覽器目前不支援WebSocket通訊。如果你的客戶端不支援WebSocket通信,下面有幾個後備方案供你使用:

Flash技術 —— Flash可以提供一個簡單的替換。 使用Flash最明顯的缺點是並非所有用戶端都安裝了Flash,而且某些用戶端,例如iPhone/iPad,不支援Flash。

AJAX Long-Polling技術 —— 用AJAX的long-polling來模擬WebSocket在業界已經有一段時間了。它是一個可行的技術,但它不能優化發送的訊息。也就是說,它是一個解決方案,但不是最佳的技術方案。

由於目前的IE等瀏覽器不支援WebSocket,要提供WebSocket的事件處理、回傳傳輸、在伺服器端使用一個統一的API,那麼該怎麼辦呢?幸運的是,Guillermo Rauch創造了一個Socket.IO技術。

三、帶Socket.IO的WebSocket

Socket.IO是Guillermo Rauch創建的WebSocket API,Guillermo Rauch是LearnBoost公司的首席技術官以及LearnLearn實驗室的首席科學家。 Socket.IO使用檢測功能來判斷是否建立WebSocket連接,或是AJAX long-polling連接,或Flash等。可快速建立即時的應用程式。 Socket.IO也提供了一個NodeJS API,它看起來很像客戶端API。

【相關推薦】

1. 免費h5線上影片教學

2. HTML5 完整版手冊

3. php.cn原創html5影片教學

4. h5Canvas繪製五星紅旗的實例解說

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡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)

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:45 PM

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

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事件。

See all articles