springboot中集成websocket 展示详细代码
时间: 2023-10-01 13:03:40 浏览: 46
以下是一个基本的Spring Boot应用程序,它集成了WebSocket:
1. 添加WebSocket支持的依赖项
在pom.xml文件中添加以下依赖项:
```
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
```
2. 创建WebSocket配置类
创建一个配置类来启用WebSocket支持和定义WebSocket端点:
```
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(new MyWebSocketHandler(), "/my-websocket");
}
private class MyWebSocketHandler extends TextWebSocketHandler {
@Override
protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
// 处理收到的消息
}
}
}
```
3. 创建一个WebSocket控制器
创建一个控制器类来处理WebSocket消息:
```
@Controller
public class WebSocketController {
@MessageMapping("/hello")
@SendTo("/topic/greetings")
public Greeting greeting(HelloMessage message) throws Exception {
Thread.sleep(1000); // 模拟耗时操作
return new Greeting("Hello, " + message.getName() + "!");
}
private static class HelloMessage {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
private static class Greeting {
private String content;
public Greeting(String content) {
this.content = content;
}
public String getContent() {
return content;
}
}
}
```
4. 创建一个WebSocket客户端
创建一个WebSocket客户端来测试WebSocket连接:
```
@Component
public class WebSocketClient implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
WebSocketStompClient stompClient = new WebSocketStompClient(new SockJsClient(
Collections.singletonList(new WebSocketTransport(new StandardWebSocketClient()))));
stompClient.setMessageConverter(new MappingJackson2MessageConverter());
StompSession stompSession = stompClient.connect("ws://localhost:8080/my-websocket", new StompSessionHandlerAdapter() {}).get();
stompSession.subscribe("/topic/greetings", new StompFrameHandler() {
@Override
public Type getPayloadType(StompHeaders headers) {
return Greeting.class;
}
@Override
public void handleFrame(StompHeaders headers, Object payload) {
Greeting greeting = (Greeting) payload;
System.out.println(greeting.getContent());
}
});
stompSession.send("/app/hello", new WebSocketController.HelloMessage("World"));
}
}
```
以上代码演示了如何使用Spring Boot集成WebSocket。其中,WebSocketConfig类定义了WebSocket端点,WebSocketController类处理WebSocket消息,WebSocketClient类测试WebSocket连接。