springboot 发送 ServerSentEvent 消息
时间: 2023-10-12 13:16:42 浏览: 68
要在 Spring Boot 中发送 Server-Sent Event 消息,可以使用 Spring WebFlux 模块中的 Server-Sent Event 支持。下面是一个简单的例子,展示了如何使用 Server-Sent Event 发送消息:
1. 创建一个返回 Flux<ServerSentEvent> 的 REST 接口:
```java
@RestController
public class SSEController {
@GetMapping(value = "/sse", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<ServerSentEvent<String>> getMessages() {
return Flux.interval(Duration.ofSeconds(1))
.map(sequence -> ServerSentEvent.<String> builder()
.id(String.valueOf(sequence))
.event("message")
.data("Hello SSE " + LocalTime.now().toString())
.build());
}
}
```
该接口会每秒钟发送一条消息,消息内容为当前时间。
2. 在客户端使用 EventSource 对象接收消息:
```javascript
var eventSource = new EventSource('/sse');
eventSource.onmessage = function(event) {
console.log(event.data);
}
```
客户端代码会每秒钟打印一条消息内容。
注意,需要使用浏览器支持 Server-Sent Event 的版本(如 Chrome、Firefox 等),才能正常接收消息。