Websocket原理
1.WebSocket 機制
以下簡要介紹一下 WebSocket 的原理及運行機制。
WebSocket 是 HTML5 一種新的協議。它實現了瀏覽器與服務器全雙工通信,能更好的節省服務器資源和帶寬並達到實時通訊,它建立在 TCP 之上,同 HTTP 一樣通過 TCP 來傳輸數據,但是它和 HTTP 最大不同是:
· WebSocket 是一種雙向通信協議,在建立連接後,WebSocket 服務器和 Browser/Client Agent 都能主動的向對方發送或接收數據,就像 Socket 一樣;
· WebSocket 需要類似 TCP 的客戶端和服務器端通過握手連接,連接成功後才能相互通信。
有交集,但是並不是全部。
·
非 WebSocket 模式傳統 HTTP 客戶端與服務器的交互如下圖所示:
圖 1. 傳統 HTTP 請求響應客戶端服務器交互圖
ajax輪詢
ajax輪詢的原理非常簡單,讓瀏覽器隔個幾秒就發送一次請求,詢問服務器是否有新信息。
使用 WebSocket 模式客戶端與服務器的交互如下圖:
圖 2.WebSocket 請求響應客戶端服務器交互圖
上圖對比可以看出,相對於傳統 HTTP 每次請求-應答都需要客戶端與服務端建立連接的模式,WebSocket 是類似 Socket 的 TCP 長連接的通訊模式,一旦 WebSocket 連接建立後,後續數據都以幀序列的形式傳輸。在客戶端斷開 WebSocket 連接或 Server 端斷掉連接前,不需要客戶端和服務端重新發起連接請求。在海量併發及客戶端與服務器交互負載流量大的情況下,極大的節省了網絡帶寬資源的消耗,有明顯的性能優勢,且客戶端發送和接受消息是在同一個持久連接上發起,實時性優勢明顯。
2.建立連接
spring+websocket
1. 加入 maven依賴 pom.xml
2. 配置spring 文件 加入websocket
3. 配置攔截器
4. 攔截器處理類
5.創建配置
創建websocket配置相關的類,如我的WebSocketConfig.java,這一個類似於servlet項目中的@ServerEndpoint註解,它的作用就是在html頁面中可以直接訪問這個類配置的網址,從而進行相關邏輯的處理,而不是經過controller層來管理,有了這個類,WebSocketConfig就相當於是controller層了。
6.發送數據
二 、前端