Spring WebSocket 提供了一个简单且强大的方式来构建全双工、实时通信的应用程序。WebSocket 是一种网络通信协议,允许服务器和客户端之间进行全双工通信。

特点

  • 实时性:WebSocket 连接一旦建立,服务器和客户端之间就可以实时交换数据。
  • 持久连接:WebSocket 连接在建立后,除非客户端或服务器关闭连接,否则将一直保持打开状态。
  • 轻量级:WebSocket 协议本身开销很小,传输效率高。

快速开始

在 Spring Boot 应用中,你可以使用以下步骤来创建一个 WebSocket 服务:

  1. 添加依赖:在你的 pom.xml 文件中添加 Spring WebSocket 依赖。
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
  1. 配置 WebSocket Endpoint:创建一个实现了 WebSocketConfigurer 接口的类,并配置 WebSocket Endpoint。
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketConfigurer {

    @Override
    public void registerWebSocketHandlers(WebSocketMessageBrokerRegistry registry) {
        registry.addHandler(messageHandler(), "/ws").setAllowedOrigins("*");
    }

    @Bean
    public TextWebSocketHandler messageHandler() {
        return new MyTextWebSocketHandler();
    }
}
  1. 实现 WebSocket Handler:创建一个实现了 TextWebSocketHandler 接口的类,处理 WebSocket 消息。
@Controller
public class MyTextWebSocketHandler extends TextWebSocketHandler {

    @Override
    protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
        // 处理消息
    }
}
  1. 发送消息:使用 SimpleteWebSocketMessageBroker 发送消息。
@Autowired
private SimpleteWebSocketMessageBroker broker;

public void sendMessage(String destination, String message) {
    broker.sendDestination(message, destination);
}
  1. 接收消息:在客户端连接到 WebSocket 后,你可以接收消息。
var socket = new WebSocket('ws://localhost:8080/ws');

socket.onmessage = function(event) {
    console.log(event.data);
};

扩展阅读

更多关于 Spring WebSocket 的信息,请访问我们的 Spring WebSocket 教程

Spring WebSocket 示例