Spring Boot项目中使用WebSocket消息代理功能
- 添加依赖:在
pom.xml
文件中添加Spring Boot的WebSocket依赖。<dependencies> <!-- Spring Boot Starter Websocket --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> </dependencies>
- WebSocket配置类 (
WebSocketConfig.java
):
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.*;
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
//这个代表了前端需要通过/ws路径来建立连接
registry.addEndpoint("/ws").setAllowedOrigins("*").withSockJS();
}
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
//这个你就把它当作创建了"/topic", "/queue"这两个频道,然后前端建立连接后
//可以监听这两个频道,后端发送消息到这其中频道后,前端可以接收到
registry.enableSimpleBroker("/topic", "/queue");
//这个代表前端可以通过/user开头的地址,来给服务端发送消息,服务端可以用
//@MessageMapping注解来接收消息
// @MessageMapping("/sendMessage") 例如这样写,前端就需要通过/user/sendMessage来给后
//端的这个方法发送消息
registry.setUserDestinationPrefix("/user");
}
}
WebSocket控制器 (WebSocketController.java
):
import org.springframework.messaging.handler.annotation.MessageMapping;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.stereotype.Controller;
@Controller
public class WebSocketCon