WebSocket是一種在單個TCP連線上進行全雙工通信的協定。
WebSocket通信協定於2011年被ETF定為標準RFC6455,並由RFC7936補充規範,WebSocket API也被W3C定為標準。在WebSocket API中,瀏覽器和伺服器只需要完成一次握手,兩者之間就可以創建持久性的連線,並進行雙向數據傳輸。這種協定使得客戶端和伺服器之間的數據交換變得更加簡單,允許伺服器主動向客戶端推送數據。
在傳統的HTTP協定中,每次數據傳輸都需要重新建立連線,而在WebSocket中,會話可以一直保持打開狀態,直到某一方關閉連線。WebSocket使用HTTP協定來建立傳輸層的TCP連線,並通過特定的請求頭欄位(如Connection: upgrade和Upgrade: websocket)將HTTP協定升級為WebSocket協定。
WebSocket協定的特點包括:
全雙工通信:允許客戶端和伺服器之間同時進行數據傳送和接收。
持久連線:建立連線後,雙方可以保持連線狀態,不必頻繁重新連線。
雙向數據傳輸:客戶端和伺服器都可以主動傳送數據。
頭部格式:WebSocket有自己的請求和回響頭部格式,與HTTP頭部不同。
安全性:支持加密連線(wss),通過TLS/SSL保證數據傳輸的安全性。
掩碼機制:在客戶端到伺服器的數據傳輸中,為了增加安全性,會對數據進行掩碼處理。
總的來說,WebSocket是一種先進的網路通信協定,它通過在單個TCP連線上實現全雙工通信,極大地簡化了客戶端和伺服器之間的數據交換過程,提高了實時通信的效率和可靠性。