SpringBoot整合WebSocket實作資料推送
- 基本概念
- WebSocket示例
- WebSocket:
- WebSocket是一種在單個TCP連接配接上進行全雙工通信的協定
- WebSocket使得伺服器和用戶端之間的資料交換更加簡單,允許服務端主動向用戶端推送資料
- 在WebSocket中,浏覽器和伺服器隻需要完成一次握手,兩者之間就可以直接建立持久性的連接配接,并進行雙向資料傳輸
- 使用WebSocket方式實作資料推送:
SpringBoot整合WebSocket實作資料推送 - 使用WebSocket實作資料推送的優點:
- 較少的控制開銷: 在連接配接建立後,伺服器與用戶端之間交換資料時,用于協定控制的資料標頭部相對較小. 在不包括擴充的情況下,對于伺服器到用戶端的内容,頭部的大小隻有2-10位元組,大小和資料包長度相關; 對于用戶端到伺服器的内容,頭部需要加上額外的4個位元組的掩碼. 相對于HTTP請求每次都需要攜帶完整的頭部,這裡的開銷明顯減少
- 較強的實時性: 由于協定是全雙工的,是以伺服器可以随時主動下發資料給用戶端. 相對于HTTP請求需要等待用戶端發起請求服務端才能響應,延遲明顯減小. 對于和Comet等長輪詢相比較,也能在短時間内更多次地傳遞資料
- 保持連接配接狀态: 和HTTP不同 ,WebSocket需要先建立連接配接,這使得WebSocket成為一種有狀态的協定,這樣通信時可以省略部分狀态資訊. 而HTTP請求可能需要在每次請求時都要攜帶狀态資訊,比如身份認證等
- 較好的二進制支援: WebSocket中定義了二進制幀. 和HTTP相比較,可以更好地處理二進制資料
- 支援擴充: WebSocket定義了擴充,可以擴充協定,實作部分自定義的子協定. 比如部分浏覽器支援壓縮等
- 較好的壓縮效果: 和HTTP壓縮相比較 ,WebSocket在适當的擴充支援下,可以沿用之前的上下文,這樣在傳遞類似資料時,可以顯著提高壓縮率
- PC:
- 系統管理者賬号密碼登入
- 伺服器Server權限架構校驗
- 校驗成功
- 根據使用者ID儲存Session
- 登入首頁自動連接配接WebSocket
- 伺服器Server建立連接配接并根據使用者ID綁定目前浏覽器Session
- APP:
- 在APP端進行資訊填寫
- 伺服器Server校驗資訊填寫是否正确
- 服務端Server查詢管理者是否線上
- 查詢管理者線上
- 推送資訊填寫的消息
- 注意:
- 退出PC系統的則關閉WebSocket連接配接
- APP資訊填寫成功,查詢管理者是否線上.如果線上則推送填寫成功的消息. 如果不線上,則先儲存成功填寫成功的消息,在管理者上線時再推送填寫成功的消息
- WebSocket使用示例