Springboot 中 使用 stomp websocket 实现点对点发送消息
时间: 2024-09-07 08:00:46 浏览: 77
SpringBoot webSocket实现发送广播、点对点消息和Android接收
Spring Boot中使用STOMP(Simple Messaging over Transport Layer Protocol)和WebSocket技术可以实现服务器与客户端之间的实时双向通信,适合点对点的消息推送。以下是基本步骤:
1. 添加依赖:首先,你需要在你的`pom.xml`文件中添加Spring WebSocket和Stomp的依赖:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>stomp-websocket</artifactId>
</dependency>
```
2. 配置WebSocket:在`Application.java`或配置类中开启WebSocket支持,并指定一个处理器:
```java
@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("/ws").withSockJS();
}
}
```
这里的`/topic`是STOMP主题的前缀,而`/app`是应用消息前缀。
3. 创建消息处理器:创建一个实现了`TextMessageSender`接口的类,处理发送和接收的消息:
```java
@Service
public class MyStompService {
@Autowired
private StompSessionHandlerAdapter sessionHandler;
// 发送消息到特定用户
public void sendMessage(String destination, String message, Session session) {
session.getAsyncSend().send(destination, new TextMessage(message));
}
// 处理接收到的消息
@OnOpen
public void onOpen(Session session) {
sessionHandler.onOpen(session);
}
// ...其他事件如@OnMessage, @OnError, @OnClose等
}
```
4. 客户端连接:在前端通过JavaScript库(如SockJS和Stomp.js)建立WebSocket连接并订阅主题,以便接收服务器发来的消息。
阅读全文