什麼是WebSocket協議
隨著科技發展,人們需求越來越多,生活的方方面面都離不開一些實時資訊。比如:疫情期間在家協同辦公、疫情監控目標人的實時運動軌跡、社交中的實時訊息、多玩家互動遊戲、每秒瞬息萬變的股市基金報價、體育實況播放、音視訊聊天、視訊會議、線上教育等等,都可以借用WebSocket TCP連結可以讓資料飛起來。下面就聊一下WebSocket協議。
WebSocket 是HTML5開始提供的一種瀏覽器與伺服器間進行全雙工通訊的網路技術,一種基於 TCP 連線上進行全雙工通訊的協議,相對於 HTTP 這種非持久的協議來說,WebSocket 是一個持久化網路通訊的協議。依靠這種技術可以實現客戶端和伺服器端的長連線,雙向實時通訊。
它不僅可以實現客戶端請求伺服器,同時可以允許服務端主動向客戶端推送資料。是真正的雙向平等對話,屬於伺服器推送技術的一種。在 WebSocket API 中,客戶端和伺服器只需要完成一次握手,兩者之間就直接可以建立永續性的連線,並進行雙向資料傳輸。
「其他特點包括:」
- 建立在 TCP 協議之上,伺服器端的實現比較容易。
- 與 HTTP 協議有著良好的相容性。預設埠也是80和443,並且握手階段採用 HTTP 協議,因此握手時不容易遮蔽,能通過各種 HTTP 代理伺服器。
- 資料格式比較輕量,效能開銷小,通訊高效。
- 可以傳送文字,也可以傳送二進位制資料。
- 沒有同源限制,客戶端可以與任意伺服器通訊。
- 協議識別符號是ws(如果加密,則為wss),伺服器網址就是 URL。
- 協議識別符號是ws(如果加密,則為wss),伺服器網址就是 URL。
ws://xxx.ayunw.cn:80/some/path wss://xxx.ayunw.cn:443/some/path
另外客戶端不只是瀏覽器,只要實現了ws或者wss協議的客戶端socket都可以和伺服器進行通訊。
在 Web 應用架構中,連線由 HTTP/1.0 和 HTTP/1.1 處理。HTTP 是客戶端/伺服器模式中 請求一響應 所用的協議,在這種模式中,客戶端(一般是瀏覽器)向伺服器提交 HTTP 請求,伺服器響應請求的資源(例如 HTML 頁面)。
HTTP 是無狀態的,也就是說,它將每個請求當成唯一和獨立的。無狀態協議具有一些優勢,例如,伺服器不需要儲存有關會話的資訊,從而不需要儲存資料。但是,這也意味著在每次 HTTP 請求和響應中都會傳送關於請求的冗餘資訊,比如使用 Cookie 進行使用者狀態的驗證。
隨著客戶端和伺服器之間互動的增加,HTTP 協議在客戶端和伺服器之間通訊所需要的資訊量快速增加。
從根本上講,HTTP 還是 半雙工 的協議,也就是說,在同一時刻資訊的流向只能單向的:客戶端向伺服器傳送請求(單向),然後伺服器響應請求(單向)。半雙工方式的通訊效率是非常低的。
同時 HTTP 協議有一個缺陷:通訊只能由客戶端發起。
這種單向請求的特點,註定瞭如果伺服器有狀態變化,是無法主動通知客戶端的。
為了能夠及時的獲取伺服器的變化,我們嘗試過各種各樣的方式:
上述方法提供了近乎實時的通訊,但是它們也涉及 HTTP 請求和響應首標,包含了許多附加和不必要的首標資料與延遲。此外,在每一種情況下,客戶端都必須等待請求返回,才能發出後續的請求,而這顯著地增加了延退。同時也極大地增加了伺服器的壓力。
Websocket其實是一個新協議,借用了HTTP的協議來完成一部分握手,只是為了相容現有瀏覽器的握手規範而已。Websocket 是一種自然的全雙工、雙向、單套接字連線,解決了 HTTP 協議中不適合於實時通訊的問題。
「一個典型的Websocket握手如下:」
GET /chat HTTP/1.1 Host: server.example.com Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw== Sec-WebSocket-Protocol: chat, superchat Sec-WebSocket-Version: 13 Origin:
其中Websocket的核心如下,它告訴Apache、Nginx等伺服器:注意,我發起的是Websocket協議,快點幫我找到對應的助理處理而不是那個老土的HTTP。
Upgrade: websocket Connection: Upgrade
「伺服器返回如下:」
HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk= Sec-WebSocket-Protocol: chat
至此,HTTP已經完成它所有工作了,接下來就是完全按照Websocket協議進行了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901823/viewspace-2889598/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 什麼是HTTPS協議?為什麼要用HTTPS協議?HTTP協議
- websocket和http有什麼不同?以及websocket協議如何實現?WebHTTP協議
- 什麼是ip協議?協議
- 什麼是代理協議?協議
- 什麼是Gemini協議?協議
- SFTP是什麼協議FTP協議
- 什麼是協議?| 網路協議定義協議
- WebSocket協議Web協議
- 為什麼ChatGPT採用SSE協議而不是Websocket?ChatGPT協議Web
- 什麼是IP地址、IP協議?協議
- 什麼是生成樹協議(STP)?協議
- 什麼是上下文管理協議協議
- 面試官:ZAB協議是什麼?面試協議
- 深入淺出Websocket(一)Websocket協議Web協議
- WebSocket協議 8 問Web協議
- 關於WebSocket協議Web協議
- WebSocket 協議詳解Web協議
- 什麼是URL?協議頭、路徑和埠是什麼意思?協議
- 什麼是URL?協議頭,路徑和埠是什麼意思?協議
- 【Linux入門】FTP協議與SFTP協議是什麼?兩者有什麼聯絡?LinuxFTP協議
- WebSocket原理與實踐(二)---WebSocket協議Web協議
- WebSocket的Frame協議解析Web協議
- WebSocket 協議 1~4 節Web協議
- WebSocket 協議 5~10 節Web協議
- 【譯】WebSocket協議——摘要(Abstract)Web協議
- Locust 壓測websocket協議Web協議
- 網路安全網路協議知識點中,http協議是什麼?協議HTTP
- 淺談WebSocket協議、WS協議和WSS協議原理及關係Web協議
- 面試題:談談什麼是Zab協議?面試題協議
- HTTP協議是什麼?HTTP怎樣工作?-VeCloudHTTP協議Cloud
- 極光HTTP之什麼是網路協議HTTP協議
- 20 張圖說清楚什麼是 IP 協議協議
- 什麼是DHCP動態主機配置協議協議
- 【譯】 WebSocket 協議第十二章——使用其他規範中的WebSocket協議Web協議
- 傳輸控制協議/網際網路協議(TCP / IP)是什麼意思?-VeCloud協議TCPCloud
- WebSocket協議入門介紹Web協議
- nginx配置支援websocket協議wssNginxWeb協議
- SFTP是什麼協議?優勢有哪些?與FTP有什麼不同?FTP協議