关键配置步骤
- 添加依赖:在
pom.xml
(如果使用Maven)中添加Spring WebSocket和Spring Messaging相关依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-messaging</artifactId>
</dependency>
- 配置WebSocket:创建一个配置类,继承
AbstractWebSocketMessageBrokerConfigurer
或实现WebSocketMessageBrokerConfigurer
接口。
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.setApplicationDestinationPrefixes("/app");
config.enableSimpleBroker("/topic", "/queue");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/websocket-endpoint").withSockJS();
}
}
- 配置消息代理:在
configureMessageBroker
方法中,通过config.setApplicationDestinationPrefixes("/app")
设置应用程序目的地前缀,客户端发送到带有该前缀的目的地的消息将被路由到@MessageMapping
注解的方法。通过config.enableSimpleBroker("/topic", "/queue")
启用简单的消息代理,指定代理的目的地前缀,应用程序可以向这些前缀开头的目的地发送消息。
- 注册STOMP端点:在
registerStompEndpoints
方法中,通过registry.addEndpoint("/websocket-endpoint").withSockJS();
注册一个STOMP端点,withSockJS()
方法用于启用SockJS后备选项,以支持不支持WebSocket的浏览器。
相关主要类
AbstractWebSocketMessageBrokerConfigurer
:一个抽象类,实现了WebSocketMessageBrokerConfigurer
接口,提供了一些默认实现,方便子类继承来进行WebSocket和STOMP配置。
WebSocketMessageBrokerConfigurer
:接口,定义了配置WebSocket消息代理的方法,包括配置消息代理和注册STOMP端点等。
MessageBrokerRegistry
:用于配置消息代理的注册类,在configureMessageBroker
方法中使用,设置应用程序目的地前缀、启用代理等。
StompEndpointRegistry
:用于注册STOMP端点的注册类,在registerStompEndpoints
方法中使用,添加STOMP端点并配置相关选项。
@EnableWebSocketMessageBroker
:启用WebSocket消息代理的注解,添加到配置类上,开启WebSocket消息代理功能。