软件编程
位置:首页>> 软件编程>> java编程>> SpringBoot使用WebSocket的方法实例详解

SpringBoot使用WebSocket的方法实例详解

作者:苟富贵  发布时间:2022-12-26 03:19:25 

标签:spring,boot,websocket

WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。

WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

在 WebSocket API 中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。

java怎么写

配置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;
 }

总结

以上所述是小编给大家介绍的SpringBoot使用WebSocket的方法实例详解,网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

来源:https://juejin.im/post/5d03611cf265da1ba647e8ef

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com