使用SpringBoot搭建實時通信服務
在軟件開發(fā)過程中,經(jīng)常需要獲取服務器端數(shù)據(jù)來展示給用戶,對于數(shù)據(jù)的及時性有要求的場景,我們可能會采用長輪詢等方式,來以一定的頻率向服務器發(fā)起請求拉取數(shù)據(jù),輪詢方式會持續(xù)占用系統(tǒng)資源,效率較低,那么有沒有一種解決方案,能做到服務器端有數(shù)據(jù)更新,及時通知客戶端呢?通過使用websocket技術,我們可以做到客戶端與服務器端的全雙工通信,兩端都可以實時的發(fā)送數(shù)據(jù)給對方~,下面就給大家介紹下SpringBoot中怎么整合websocket技術
SpringBoot版本 2.4.5
使用方式
1.修改SpringBoot工程中的pom.xml配置,增加websocket的依賴
2.修改SpringBoot工程啟動類,添加@EnableWebSocket注解來啟用websocket能力支持

3.添加websocket配置
完整代碼參考:https://github.com/netbuffer/spring-boot-websocket-demo/blob/master/src/main/java/cn/netbuffer/springboot/websocket/demo/config/SpringWebSocketConfig.java
4.實現(xiàn)自己的消息處理器
完整代碼參考:https://github.com/netbuffer/spring-boot-websocket-demo/blob/master/src/main/java/cn/netbuffer/springboot/websocket/demo/websocket/handler/TextHandler.java
5.建立Controller控制器層映射方法,來測試主動推送消息到客戶端
完整代碼參考:https://github.com/netbuffer/spring-boot-websocket-demo/blob/master/src/main/java/cn/netbuffer/springboot/websocket/demo/controller/WebsocketController.java
6.編寫客戶端html代碼驗證websocket能力
完整代碼參考:https://github.com/netbuffer/UItest/blob/master/websocket/index.html
運行效果
啟動SpringBoot工程,再使用chrome瀏覽器訪問客戶端頁面,打開開發(fā)者工具

觀察開發(fā)者工具控制臺已經(jīng)打印出連接的日志,服務器端控制臺也已經(jīng)打印出連接日志
現(xiàn)在通過客戶端頁面發(fā)送一些消息,來查看服務器端日志是否有輸出~

觀察結果可以看到服務器端已經(jīng)收到對應內(nèi)容,并寫回響應消息給客戶端了
再測試下服務器主動推送消息給客戶端的效果,使用Postman工具訪問我們編寫的接口來發(fā)送一些消息給客戶端,注意session字符串可以從服務器日志打印中找到

觀察結果可以看到服務器已經(jīng)能實時推送相應的內(nèi)容給客戶端了~
完整測試工程參考:https://github.com/netbuffer/spring-boot-websocket-demo