超文本傳輸協議(HTTP)作爲一種簡單的協議,在面對功能日益豐富的 Web應用時,遇到了如下瓶頸:
1、在客戶端請求時,會建立一個TCP連接,然後發送請求,服務端給出響應,然後連接就關閉了。(現在的HTTP1.1支持消除了這個瓶頸)
2、客戶端和服務器之間的交互是採用請求/響應模式,缺乏服務器通知客戶端的機制,在需要通知的場景,如聊天室,遊戲,客戶端應用需要不斷地輪詢服務器。
3、請求/響應首部不經過壓縮就發送,帶來了延遲。
WebSocket協議 就是爲了解決第二個瓶頸。
WebSocket協議 使用一個TCP連接進行雙向通訊的機制,包括網絡協議和API,以取代 HTTP協議中以輪詢進行雙向通訊的機制。
本質上來說,WebSocket協議是不限於 HTTP協議的,但是由於現存大量的HTTP基礎設施,代理,過濾,身份認證等等,WebSocket協議 借用 HTTP 和 HTTPS 的端口。
爲了實現 WebSocket通信,需要使用到 HTTP協議來完成,並且使用 HTTP請求報文中的 Upgrade首部字段,告知服務器通信協議發送變化。
通過 HTTP的一次請求/響應後,客戶端和服務器之間接下來的通信將使用 WebSocket獨立的數據幀。