在 SpringBoot中的WebSocket使用介绍

发布时间:2024年01月14日

在 Spring Boot 中,WebSocket 是一种非常有用的通信协议。WebSocket 可以使客户端和服务器之间实现双向通信,而不是传统的单向 HTTP 请求和响应。本文将介绍在 Spring Boot 中如何使用 WebSocket。

  1. 添加依赖
    在 pom.xml 文件中添加以下依赖:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
  1. 创建 WebSocket 配置类
    创建一个 WebSocketConfig 类,在类上加上 @Configuration 和 @EnableWebSocket 注解。在类中添加一个方法,返回一个 WebSocketHandler 对象。
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {

    @Override
    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        registry.addHandler(myHandler(), "/myHandler").setAllowedOrigins("*");
    }

    @Bean
    public WebSocketHandler myHandler() {
        return new MyHandler();
    }
}

其中,/myHandler 是 WebSocket 的端点,MyHandler 是具体的处理类,setAllowedOrigins(“*”) 表示允许跨域请求。

  1. 创建 WebSocket 处理类
    创建一个 MyHandler 类实现 WebSocketHandler 接口,并重写其中的方法。具体实现可以根据业务需求来进行定制。
public class MyHandler implements WebSocketHandler {

    @Override
    public void afterConnectionEstablished(WebSocketSession session) throws Exception {
        // 连接建立后的操作
    }

    @Override
    public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception {
        // 处理收到的消息
    }

    @Override
    public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {
        // 处理传输错误
    }

    @Override
    public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception {
        // 连接关闭后的操作
    }

    @Override
    public boolean supportsPartialMessages() {
        return false;
    }
}
  1. 发送 WebSocket 消息
    在前端页面中,可以使用 JavaScript 的 WebSocket 对象实现与服务器的通信。例如:
var socket = new WebSocket("ws://localhost:8080/myHandler");

socket.onopen = function(event) {
    // 连接建立后的操作
};

socket.onmessage = function(event) {
    // 处理收到的消息
};

socket.onclose = function(event) {
    // 连接关闭后的操作
};

socket.send("hello world");
  1. 测试 WebSocket
    运行 Spring Boot 应用程序,并通过浏览器访问前端页面。在控制台中可以看到 WebSocket 连接的日志信息。可以使用 JavaScript 发送消息,也可以在 MyHandler 中主动发送消息。
session.sendMessage(new TextMessage("hello world"));

总结:
Spring Boot 提供了非常方便的操作 WebSocket 的方式,使得我们可以快速地实现双向通信功能。在实际开发中,可以根据具体业务需求来定制 WebSocket 的处理类。

文章来源:https://blog.csdn.net/weixin_44087733/article/details/135581695
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。