WebSocket雙工通訊


在深入了解WebSocket的需求之前,有必要先了解一下現有的技術,這些技術用於伺服器和用戶端之間的雙工通訊。這些技術如下 -

  • 輪詢
  • 長輪詢
  • 資料流
  • 回發和AJAX
  • HTML5

輪詢

輪詢可以定義為一種方法,無論傳輸中存在哪些資料,它都執行週期性請求。定期請求以同步方式傳送。用戶端在指定的時間間隔內向伺服器發出定期請求。伺服器的響應包括可用資料或其中的一些警告訊息。

長輪詢

顧名思義,長輪詢包括類似輪詢的技術。用戶端和伺服器保持連線處於活動狀態,直到獲取某些資料或發生超時。如果由於某些原因導致連線丟失,則用戶端可以重新開始並執行順序請求。

長輪詢只是對輪詢過程的效能改進,但是不斷的請求可能會減慢過程。

資料流

資料流是實時資料傳輸的最佳選擇。伺服器保持連線開啟並與用戶端一起啟用,直到並且除非提取所需的資料。在這種情況下,連線是無限期開啟的。流傳輸包括HTTP檔頭,這會增加檔案大小,增加延遲。這是一個主要缺點。

AJAX

AJAX基於Javascript的XmlHttpRequest物件。它是Asynchronous Javascript和XML的縮寫形式。XmlHttpRequest物件允許執行Javascript而無需重新載入完整的網頁。AJAX僅傳送和接收網頁的一部分。

使用XmlHttpRequest物件呼叫AJAX的程式碼片段如下 -

var xhttp;

if (window.XMLHttpRequest) {
   xhttp = new XMLHttpRequest();
} else {
   // code for IE6, IE5
   xhttp = new ActiveXObject("Microsoft.XMLHTTP");
}

與Web通訊端相比,AJAX的主要缺點是 -

  • 它們需要傳送HTTP檔頭,這使資料量更大。
  • 通訊是半雙工的。
  • Web伺服器消耗更多資源。

HTML5

HTML5是一個用於開發和設計Web應用程式的強大框架。主要支柱包括Mark-up,CSS3和Javascript API。

下圖顯示了HTML5元件 -

下面給出的程式碼片段描述了HTML5及其doctype的宣告。

<!DOCTYPE html>