WebSocket協議是基於TCP的壹種新的網絡協議。 瀏覽器通信通常是基於HTTP 協議,為什麽還需要另壹個協議?因為http只能由客戶端發起,不能由服務端發起。
而WebSocket 瀏覽器和服務器只需要完成壹次握手,兩者之間就直接可以創建持久性的連接,並進行雙向數據傳輸。
WebSocket規範
WebSocket 協議本質上是壹個基於 TCP 的協議。為了建立壹個 WebSocket 連接,客戶端瀏覽器首先要向服務器發起壹個 HTTP 請求,這個請求和通常的 HTTP 請求不同,包含了壹些附加頭信息,附加信息如圖所示
連接過程(以js(客戶端)和java(服務器端)為例)
js:ws.send( String msg) ps:入參可以是字符串或者json字符串java:onMessage(String message)message為客戶端傳來的信息
java:sendUser( String msg) js:ws.onmessage
4.斷開連接 onclose ( CloseReason reason)
CloseReason.CloseCode ( WebSocket關閉連接的狀態碼,類似http的404)
js部分:
java部分(javax實現):
ps: session 用來唯壹標識連接對象
使用註解@ServerEndpoint
參考文獻
javax websocket:(服務端實現api文檔) https://tomcat.apache.org/tomcat-8.0-doc/websocketapi/javax/websocket/package-summary.html
js websocket:(客戶端api文檔) https://developer.mozilla.org/zh-CN/docs/Web/API/WebSocket
rfc6455 (websocket協議規範): https://datatracker.ietf.org/doc/rfc6455/ ** 產品介紹**