Websocket 分析&概要

Websocket

  • 是建立在HTML5的一種新的協議,在單個TCP連接上進行瀏覽器與服務器全雙工通訊,允許服務端主動向客戶端推送數據
  • 在Websocket API中,客戶端和服務端只需要完成一次握手,兩者之間就可以創建持久性的連接,並進行雙向數據傳輸
  • Websocket同HTTP協議一樣,建立在TCP之上,客戶端和服務端進行握手連接成功後才能通信

 

Websocket&Socket

  • Socket是應用層與TCP/IP協議簇通信的中間軟件抽象層,它是一組接口
  • Socket不是一個協議,而是爲了方便使用TCP和UDP而抽象出來的一層
  • 當兩臺主機通信時,必須通過Socket連接,Socket則利用TCP/IP協議建立TCP連接
  • Websocket是典型的應用層協議

 

Websocket&HTTP

 

爲了實現Websocket通信,首先需要客戶端發送一次HTTP請求(Websocket的建立是依賴HTTP的)

GET ws://websocket.example.com/ HTTP/1.1

Host: websocket.example.com

Upgrade: websocket

Connection: Upgrade

Origin: http://example.com

Sec-WebSocket-Key:pAloKxsGSHtpIHrJdWLvzQ==

Sec-WebSocket-Version:13

HTTP頭部字段Upgrade和Connect非常重要,告訴服務器通信協議將發生改變。

支持Websocket的服務器在確認以上請求後,應返回狀態碼101的響應,表明切換成功

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: nRu4KAPUPjjWYrnzxDVeqOxCvlM=

其中字段Sec-WebSocket-Accept是服務器對客戶端發送的Sec-WebSocket-Key進行確認和加密後的結果,相當於一次驗證,以幫助客戶端確認對方是真實可用的Websocket服務器

 

Websocket心跳檢測&HTTP輪詢

1.Ajax輪詢

客戶端向服務器發送HTTP請求,然後等待服務器返回最新的數據給客戶端,設置特定的時間間隔,不斷的像服務端發送請求。

特點:服務端響應中會包含傳輸數據

2.Websocket心跳檢測

客戶端向服務端不斷髮送檢測信號,不需要阻塞等待,服務端連接正常時返回檢測結果,保證連接正常

特點:服務端響應僅僅爲了保證連接正常,數據傳輸是獨立的,在連接過程中隨時可以進行數據交互

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章