目前大多數網站都在使用的傳統 HTTP 協議,即由 Web 服務器經過 HTTP 接收並響應來自客戶端的消息,整個發起請求與響應的過程相似咱們點外賣,由如下 2 部分構成:html
在這整個過程當中,餐廳都不會看到用戶是誰,只須要接到訂單就能夠進行判斷並返回信息。也就是說服務器僅須要判斷 HTTP 請求,並做出響應(HTTP 相關狀態碼:200/403/404 等)。web
上述流程中,服務器存儲內容,可是這些內容更新獲取必須由客戶端再次請求,服務器沒法將更新主動發送給指定用戶,顯得十分笨拙。爲了改進這一項, Long Poll 以及 Ajax 輪詢應運而生。但是這兩種方式的成本極大,並且必需要客戶端保持聯繫,一旦斷開就須要從新發起請求。因此在這兩種方式的前提下,WebSocket 誕生了。瀏覽器
爲了可以知足隨時獲取數據的需求,,WebSocket 協議誕生,並在 2011 年成爲國際標準。 做爲 HTML 5 規範的組成部分之一,WebSocket 是一種全新的協議。它將 TCP 的 Socket(套接字)應用在了 Web page 上,從而使通訊雙方創建起一個保持在活動狀態鏈接通道,而且屬於全雙工(雙方同時進行雙向通訊)。藉助 WebSocket 咱們能夠在開放網絡上進行多人遊戲,實時聊天,多人協做等,目前大多數瀏覽器都支持該協議,包括 Google Chrome,Firefox,Safari,Opera,Microsoft Edge和Internet Explorer。安全
WebSocket 最大的特色就是,客戶端能夠主動發送消息到服務端,服務端也能夠主動向客戶端發送消息,實現雙向通信。服務器
上圖能夠看出,相比較輪詢,WebSocket 在第一次 HTTP 握手以後,就改走 WebSocket 了,對於 HTTP 的長鏈接(非持久鏈接),WebSocket 的持久鏈接更具實效性。websocket
WebSocket 其優點主要包括如下幾個方面:網絡
客戶端架構
GET /chat HTTP/1.1 Host: 127.0.0.1:4000 Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: aFeKKHNhbFYZSBub14oUK== Origin: http://localhost:4000 Sec-WebSocket-Protocol: chat, superchat Sec-WebSocket-Version: 13
服務端響應socket
HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo= Sec-WebSocket-Protocol: chat
重要字段說明:優化
社交,聊天等
聊天應用特色就是低延遲,高及時,採用的 WebSocket 協議,用戶將消息發送到服務器,服務器直接將消息發送給收件人。另外,服務器還能夠在通道中存儲多個鏈接,用戶能實現一次性向多人發送消息,或者查看房間內多我的的信息,實現了實時溝通交流。
多人遊戲
多人遊戲比較常見的模式就是,服務器用來存儲狀態,玩家將改變更做的狀態發送到服務器,而後更新遊戲狀態給全部玩家,使用 HTTP 的話,每一個玩家須要按期向服務器請求狀態。使用 WebSocket 後,玩家的每一個動做將實時的推送給全部玩家。
多人協做
須要多人在共享文檔上一塊兒工做嗎?可使用 WebSocket 實現多人共同協做,每一個人的動做更新時,都會推送給全部參與者。
地圖等定位相關
每當用戶的 GPS 座標更改時,更新服務器後,就會根據用戶的最新座標推送新的數據。
股票、基金報價展現
金融界數據瞬息萬變,幾乎是每毫秒都在變化。若是採用傳統的網絡架構則沒法知足實時性,使用 WebSocket 能夠流式更新這些數據變化而不須要等待。
目前又拍雲已經全面支持 WebSocket,爲採用 ws/wss 協議進行通訊的客戶提供優質的加速服務,能有效下降延遲,提升傳輸效率。產品特性及優點包括:
智能路由: 實時探測互聯網線路,鏈路耗時跟蹤分析,智能選擇最優路徑。
協議優化: 經過增大 TCP 窗口初始大小,調節慢啓動閥值等等,解決傳統協議存在的缺陷,提升傳輸效率。
支持WSS: 用戶可自主申請、綁定 SSL 證書,一鍵開啓 WSS 加速。同時又拍雲提供多種品牌的免費、付費證書申購,爲用戶提供一站式 WSS 安全加速解決方案。
數據統計: 支持實時帶寬、流量查詢,全平臺自助化查詢,日誌分析及下載支持,時刻掌控業務全局。
WebSocket 依賴 HTTP 協議而存在,可是同時 HTTP 和 WebSocket 都是基於 TCP 協議的不一樣協議,二者沒有衝突。