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>

上一篇: Websocket簡介 下一篇: 為什麼需要Websocket?