WebSocket 是 HTML5 開始提供的一種在單個 TCP 連接上進行全雙工通訊的協(xié)議。
WebSocket 使得客戶端和服務器之間的數(shù)據(jù)交換變得更加簡單,允許服務端主動向客戶端推送數(shù)據(jù)。在 WebSocket API 中,瀏覽器和服務器只需要完成一次握手,兩者之間就直接可以創(chuàng)建持久性的連接,并進行雙向數(shù)據(jù)傳輸。
在 WebSocket API 中,瀏覽器和服務器只需要做一個握手的動作,然后,瀏覽器和服務器之間就形成了一條快速通道。兩者之間就直接可以數(shù)據(jù)互相傳送。
java怎么寫
配置Bean
@Bean public ServerEndpointExporter serverEndpointExporter() { return new ServerEndpointExporter(); }
java鏈接
/** * token為前端連接時的標識,后端根據(jù)此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) { // 根據(jù)業(yè)務邏輯,找到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客戶端通過回調函數(shù)來接收服務端消息。例如:webSocket.onmessage * 2、WebSocket客戶端通過send方法來發(fā)送消息給服務端。例如:webSocket.send(); */ function getWebSocket() { /** * WebSocket客戶端 PS:URL開頭表示W(wǎng)ebSocket協(xié)議 中間是域名端口 結尾是服務端映射地址 */ var webSocket = new WebSocket(/*[[${webSocketUrl}]]*/ 'ws://localhost:8080/webSocket/2'); /** * 當服務端打開連接 */ webSocket.onopen = function (event) { console.log('WebSocket打開連接'); }; /** * 當服務端發(fā)來消息:1.廣播消息 2.更新在線人數(shù) */ 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發(fā)生異常'); }; return webSocket; }
總結
以上所述是小編給大家介紹的SpringBoot使用WebSocket的方法實例詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!