您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關WebSocket如何在SpringBoot中使用,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
配置Bean
@Bean public ServerEndpointExporter serverEndpointExporter() { return new ServerEndpointExporter(); }
java鏈接
/** * token為前端連接時的標識,后端根據此token維護用戶與webSocket的綁定 */ @Component @ServerEndpoint("/webSocket/{token}") public class WebSocket { private Session session; private static ConcurrentHashMap<String, WebSocket> webSocketMap = new ConcurrentHashMap<>(); @OnOpen public void onOpen(@PathParam(value = "token") String token, Session session) { this.session = session; webSocketMap.put(token, this); System.out.println("new connect:" + token + ". total :" + webSocketMap.size()); } @OnClose public void onClose(@PathParam(value = "token") String token) { webSocketMap.remove(token); System.out.println("disconnect:" + token + ", total:" + webSocketMap.size()); } @OnMessage public void onMessage(String message) { System.out.println("get message: " + message); } public void sendMessage(String message) { // 根據業務邏輯,找到token指向的webSocket WebSocket webSocket = webSocketMap.get(String.valueOf(message.charAt(0))); // 找不到返回 if (webSocket == null) { return; } try { webSocket.session.getBasicRemote().sendText(message); } catch (IOException e) { e.printStackTrace(); } } }
前端怎么寫
/** * WebSocket客戶端 * * 使用說明: * 1、WebSocket客戶端通過回調函數來接收服務端消息。例如:webSocket.onmessage * 2、WebSocket客戶端通過send方法來發送消息給服務端。例如:webSocket.send(); */ function getWebSocket() { /** * WebSocket客戶端 PS:URL開頭表示WebSocket協議 中間是域名端口 結尾是服務端映射地址 */ var webSocket = new WebSocket(/*[[${webSocketUrl}]]*/ 'ws://localhost:8080/webSocket/2'); /** * 當服務端打開連接 */ webSocket.onopen = function (event) { console.log('WebSocket打開連接'); }; /** * 當服務端發來消息:1.廣播消息 2.更新在線人數 */ webSocket.onmessage = function (event) { console.log('WebSocket收到消息:%c' + event.data, 'color:green'); }; /** * 關閉連接 */ webSocket.onclose = function (event) { console.log('WebSocket關閉連接'); }; /** * 通信失敗 */ webSocket.onerror = function (event) { console.log('WebSocket發生異常'); }; return webSocket; }
以上就是WebSocket如何在SpringBoot中使用,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。