1. 程式人生 > 實用技巧 >WebSocket介紹

WebSocket介紹

websocket介紹:

websocket是html5開始提供的一種在單個TCP連線上進行全雙工通訊的協議,它使得客戶端和伺服器之間的資料交換變得更加簡單,允許服務端主動向客戶端推送資料。在WebSocket API中,瀏覽器和伺服器只需要完成一次握手,兩者之間就直接可以建立永續性的連線,並進行雙向傳輸。

在WebSocket API中,瀏覽器和伺服器只需要做一個握手動作,然後瀏覽器和伺服器之間就形成了一條快速通道。兩者之間就直接可以資料互相傳送。

Ajax輪詢:

輪詢是在特定的時間間隔,由瀏覽器對伺服器發出HTTP請求,然後由伺服器返回最新的資料給客戶端的瀏覽器。這種傳統的模式帶來明顯的缺點,即瀏覽器需要不斷的向伺服器發出請求,然而,HTTP請求可能包含較長的頭部,其中真正有效的資料可能只是一小部分,顯然這樣胡浪費很多的頻寬等資源。

websocket協議能更好的節省伺服器資源和頻寬,並且能夠更實時地進行通訊。

websocket於http的關係:

相同點:

  • 都是一樣基於TCP的,都是可靠性傳輸協議
  • 都是應用層協議

不同點:

  • websocket是雙向通訊協議,模擬socket協議,可以雙向傳送或接收資訊。http是單向的
  • websocket是需要握手進行建立連線的

聯絡:

websocket在建立握手時,資料是通過http傳輸的。但是在建立之後,真正傳輸的時候是不需要http協議的。

websocket與socket的關係:

socket其實並不是一個協議,而是為了方便使用TCP或者UDP而抽象出來的一層,是位於應用層和傳輸控制層之間的一組介面。在設計模式中,socket其實就是一個門面模式,它把複雜的tcp/ip協議族隱藏在socket介面後面,對使用者來說,一組簡單的介面就是全部,讓socket去組織資料,以符合指定的協議。

當兩臺主機通訊時,必須通過socket連線,socket則利用tcp/ip協議建立tcp連線。tcp連線則更依靠與底層的ip協議,ip協議的連線則依賴於鏈路層等更低層次。

websocket事件:

  • open:---->處理程式:Socket.onopen 連線建立時觸發
  • messag:---->處理程式:Socket.onmessage 客戶端接收服務端資料時觸發
  • error:---->處理程式:Socket.onerror 通訊發生錯誤時觸發
  • close:---->處理程式:Socket.onclose 連線關閉時觸發

websocket方法:

  • socket.send():使用連線傳送資料
  • socket.close():關閉連線