springboot怎么搭建webSocket服务
时间: 2024-05-13 19:14:19 浏览: 67
要使用Spring Boot搭建WebSocket服务,需要遵循以下步骤:
1.在pom.xml文件中,添加以下依赖项:
```
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
```
2.创建一个WebSocket配置类,该类应扩展`WebSocketMessageBrokerConfigurer`:
```
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/topic");
config.setApplicationDestinationPrefixes("/app");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/chat");
registry.addEndpoint("/chat").withSockJS();
}
}
```
3.在配置类中,我们需要覆盖configureMessageBroker()方法,以配置消息代理。在这里,我们使用`enableSimpleBroker()`方法配置简单的消息代理,使用`setApplicationDestinationPrefixes()`方法配置应用程序前缀。
4.在配置类中,我们还需要覆盖registerStompEndpoints()方法,以注册WebSocket端点。在这里,我们使用`addEndpoint()`方法注册一个WebSocket端点,使用`withSockJS()`方法启用SockJS支持。
5.在您的控制器中,您可以使用`@MessageMapping`注释处理WebSocket消息。例如:
```
@Controller
public class ChatController {
@MessageMapping("/chat.sendMessage")
@SendTo("/topic/public")
public ChatMessage sendMessage(@Payload ChatMessage chatMessage) {
return chatMessage;
}
@MessageMapping("/chat.addUser")
@SendTo("/topic/public")
public ChatMessage addUser(@Payload ChatMessage chatMessage,
SimpMessageHeaderAccessor headerAccessor) {
headerAccessor.getSessionAttributes().put("username", chatMessage.getSender());
return chatMessage;
}
}
```
6.在控制器中,我们使用`@MessageMapping`注释处理来自客户端的WebSocket消息,并使用`@SendTo`注释将响应消息发送回客户端。在这里,我们使用`/topic/public`作为目的地。
7.最后,在您的HTML文件中,您可以使用JavaScript创建WebSocket连接并发送消息。例如:
```
var socket = new SockJS('/chat');
var stompClient = Stomp.over(socket);
stompClient.connect({}, function (frame) {
stompClient.subscribe('/topic/public', function (chatMessage) {
showMessage(JSON.parse(chatMessage.body));
});
});
function sendMessage() {
var chatMessage = {
sender: $("#username").val(),
content: $("#message").val()
};
stompClient.send("/app/chat.sendMessage", {}, JSON.stringify(chatMessage));
}
```
这是一个基本的Spring Boot WebSocket服务的搭建方法,你可以根据你的需要进行修改和扩展。
阅读全文