在Spring Boot中集成WebSocket有多种方式,以下是三种常见的集成方式及其配置步骤:
一、使用Javax.websocket原生注解
-
添加依赖:
在
pom.xml
文件中添加Spring Boot WebSocket的依赖:xml<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency>
-
配置服务端点:
使用
@ServerEndpoint
注解来标记WebSocket服务端点,并配置路径。在类中添加处理连接打开、关闭、接收消息和异常的方法,分别使用@OnOpen
、@OnClose
、@OnMessage
和@OnError
注解来标记。java@Component @ServerEndpoint("/websocket/{type}") public class JavaxWebSocketServerEndpoint { @OnOpen public void onOpen(Session session, EndpointConfig config, @PathParam("type") String type) { // 连接建立 } @OnClose public void onClose(Session session, CloseReason reason) { // 连接关闭 } @OnMessage public void onMessage(Session session, String message) { // 接收文本信息 } @OnMessage public void onMessage(Session session, PongMessage message) { // 接收pong信息 } @OnMessage public void onMessage(Session session, ByteBuffer message) { // 接收二进制信息 } @OnError public void onError(Session session, Throwable e) { // 异常处理 } }
-
配置Spring Boot以支持Javax.websocket:
创建一个配置类,并手动注入
ServerEndpointExporter
,以便Spring Boot能够扫描到WebSocket的注解。java@Configuration(proxyBeanMethods = false) public class JavaxWebSocketConfiguration { @Bean public ServerEndpointExporter serverEndpointExporter() { return new ServerEndpointExporter(); } }
二、使用Spring封装的WebSocket
-
添加依赖:
同样在
pom.xml
文件中添加Spring Boot WebSocket的依赖。 -
配置WebSocket处理器:
实现
WebSocketHandler
接口,并在配置类中注册该处理器。,并在配置类中注册该处理器。java@Component public class MyWebSocketHandler implements WebSocketHandler { @Override public void handleTextMessage(WebSocketSession session, TextMessage { @Override public void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception { // 处理文本消息 String payload = message.getPayload(); session.sendMessage(new TextMessage("服务器收到:" + payload)); } // 其他方法如afterConnectionEstablished, afterConnectionClosed, handleTransportError等也需要实现 } @EnableWebSocket @Configuration public class WebSocketConfig implements WebSocketConfigurer { @Autowired private MyWebSocketHandler webSocketHandler; @Override public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { registry.addHandler(webSocketHandler, "/testWs").setAllowedOrigins("*"); } }
三、使用Spring封装的STOMP协议
STOMP(Simple Text Oriented Messaging Protocol)是一个简单的文本协议,用于在客户端和服务器之间进行消息传递。虽然它提供了更多的功能,但相对来说也更加复杂。
-
添加依赖:
除了Spring Boot WebSocket的依赖外,还需要添加Spring Messaging的依赖。
-
配置STOMP端点和消息代理:
在配置类中配置STOMP端点和消息代理,如RabbitMQ或ActiveMQ等。
-
实现消息处理器:
使用
@MessageMapping
注解来标记处理客户端发送消息的方法。 -
客户端配置:
客户端需要使用STOMP协议的客户端库来连接服务器,并发送和接收消息。
总结
以上三种方式都可以在Spring Boot中集成WebSocket,选择哪种方式取决于具体的需求和项目的复杂度。对于简单的WebSocket应用,使用Javax.websocket原生注解或Spring封装的WebSocket已经足够;而对于需要更复杂消息传递和路由的应用,可以考虑使用Spring封装的STOMP协议。