springboot消息推送websocket
时间: 2023-09-09 11:01:33 浏览: 101
Spring Boot 中使用 WebSocket 进行消息推送非常简单。以下是一个简单的示例:
1. 首先,在 pom.xml 文件中添加以下依赖:
```
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
</dependencies>
```
2. 创建一个 WebSocket 配置类,用于配置 WebSocket 相关的操作。在该类上添加 `@Configuration` 和 `@EnableWebSocket` 注解,示例代码如下:
```
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(myHandler(), "/myHandler") // 指定处理器和URL地址
.setAllowedOrigins("*"); // 允许跨域访问
}
@Bean
public WebSocketHandler myHandler() {
return new MyWebSocketHandler();
}
}
```
3. 创建一个自定义的 WebSocket 处理器,用于处理 WebSocket 相关的操作逻辑。示例代码如下:
```
public class MyWebSocketHandler extends TextWebSocketHandler {
private List<WebSocketSession> sessions = new CopyOnWriteArrayList<>(); // 保存所有连接的 Session
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
sessions.add(session); // 添加新的连接 Session
}
@Override
protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
String payload = message.getPayload();
// 处理接收到的消息
// ...
// 将处理结果发送给所有连接的客户端
sendMessageToAll(payload);
}
private void sendMessageToAll(String message) throws IOException {
for (WebSocketSession session : sessions) {
session.sendMessage(new TextMessage(message));
}
}
}
```
4. 在 Controller 类中编写发送消息的接口,示例代码如下:
```
@RestController
public class MessageController {
@Autowired
private WebSocketHandler myHandler;
@GetMapping("/sendMessage")
public String sendMessage(@RequestParam("message") String message) throws IOException {
myHandler.sendMessageToAll(message); // 调用自定义的 WebSocket 处理器发送消息
return "消息已发送!";
}
}
```
5. 启动应用程序,并访问 `/sendMessage` 接口发送消息,可以收到消息的 WebSocket 客户端会收到推送的消息。
以上就是使用 Spring Boot 进行 WebSocket 消息推送的简单示例。有关更详细的配置和使用,请参考 Spring Boot 官方文档和相应的 WebSocket 规范。
阅读全文