傳統的 Web 模型是圍繞 HTTP 請求和響應正規化構建的。 在 HTTP 連線中,客戶端向伺服器傳送請求,伺服器使用請求的資料進行響應。 這發生在每個請求和響應的單獨連線中,這意味著 HTTP 不太適合需要連續雙向通訊的實時應用程式。 為了用 HTTP 解決這個問題,我們使用 WebSockets。
WebSocket 是一種通訊協議,可在客戶端和伺服器之間實現雙向通訊。 它通過單個TCP連線提供全雙工通訊通道,並允許雙向資料傳輸。 一旦建立了 websocket 連線,它將保持開啟狀態,直到伺服器或客戶端終止它。 這有助於我們在客戶端和伺服器之間進行連續、實時的通訊,而無需頻繁重新建立連線。
WebSocket 和 HTTP 協議有很大不同,但都依賴於 OSI 模型第 4 層(傳輸層)的 TCP 協議,並存在於第 7 層(應用層)。
WebSocket 協議允許客戶端和伺服器之間的低階通訊,從而減少與 HTTP 相關的開銷。
通過在客戶端和伺服器之間保持持久的單個 TCP 套接字連線,WebSocket 協議可以有效地分發雙向訊息。 這導致了低延遲連線,從而實現了快速響應的通訊。
WebSockets 已成為開發實時應用程式的關鍵元件,例如多人遊戲或任何需要快速可靠資料傳輸的應用程式。
為了建立 websocket 連線,客戶端首先通過傳送帶有“公升級”訊息的 HTTP 請求來啟動與伺服器的握手。 標頭將連線提公升為 websocket 連線。
注意:客戶端通過呼叫 WebSocket 建構函式開啟 WebSocket 連線,該建構函式對 WebSocket 使用 URL 模式“WS:”或“WSS:”(就像 HTTP 的“http:”或“https:”一樣)。
伺服器收到客戶端請求後,伺服器通過傳送帶有“101 交換協議”訊息的響應來接受請求。 指示使用 websocket 的狀態和標頭。
一旦建立了 websocket 連線,客戶端和伺服器就可以相互傳送訊息,而無需新的請求-響應週期。 在連線物件上使用 send() 方法以二進位格式傳送訊息。 在最新規範中,WebSocket 連線支援使用 blob 或 ArrayBuffer 物件傳送字串和二進位訊息。
websocket 連線將保持開啟狀態,直到客戶端或伺服器將其關閉。
雙向資料交換:WebSocket 通過使用單個連線實現雙向資料同步,對於減少網路流量至關重要。
HTTP相容性:WebSocket 與以前版本的 HTTP 連線高度相容,允許我們在 HTTP 和 WebSocket 之間切換。
發布-訂閱事件模式WebSocket通過建立通訊通道,提供高效的資料傳輸模型。 這允許向伺服器傳送訊息和從伺服器傳送訊息,以及接收事件驅動的響應,而無需不斷輪詢伺服器。
WebSocket 通常用於需要在客戶端和伺服器之間進行實時雙向通訊的各種型別的應用程式。
實時訊息傳遞:網路套接字對於實現實時通訊(例如實時聊天應用程式)至關重要。 它們提供高效快速的資料傳輸,從而可以構建複雜的功能,例如加密訊息、鍵入指示器等。
多人遊戲網路套接字可實現玩家之間遊戲狀態的低延遲和實時同步。 這樣可以跨多個裝置獲得無縫、互動式**的遊戲體驗。
實時地圖實時位置資料對於構建實時地圖至關重要。 Web 套接字可以高效、快速地傳輸這些資料,從而實現移動資產的實時路由和導航。
實時更新:Web 套接字在為各種平台提供實時更新方面非常有價值,例如實時選舉結果、實時比分更新等。 它們確保使用者始終處於最新狀態。
Web Sockets 真正徹底改變了 Web 開發。 由於其有狀態和雙向特性,它們在需要實時更新或連續資料流的系統中非常有用。 但是,如果我們只需要獲取一次,那麼與 Web 套接字相比,我們考慮乙個簡單的 HTTP 請求。
優質作者名單