欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

SpringBoot使用WebSocket的方法实例详解

时间:2020-12-14 14:08:42|栏目:JAVA代码|点击:

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

总结

上一篇:Java线程监听,意外退出线程后自动重启的实现方法

栏    目:JAVA代码

下一篇:java生成jar包并且单进程运行的实例

本文标题:SpringBoot使用WebSocket的方法实例详解

本文地址:http://www.codeinn.net/misctech/32518.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有