Spring Boot WebFlux:实现web(Server-Sent Events)事件异步推送
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.function.ServerResponse;
import reactor.core.publisher.Flux;
@RestController
public class SseController {
@GetMapping("/stream-sse")
public Flux<ServerResponse> streamSse() {
// 使用 ServerResponse 的构建器创建 SSE 响应
Flux<ServerResponse> responseFlux = Flux.interval(Duration.ofSeconds(1))
.map(seq -> ServerResponse.ok()
.contentType(MediaType.TEXT_EVENT_STREAM)
.body(BodyInserters.fromObject("data: " + seq + "\n\n")));
return responseFlux;
}
}
这段代码使用了Spring WebFlux框架的Flux
来创建一个服务端发送事件(SSE)的响应流。它每隔1秒发送一个事件,并且使用标准的SSE格式,即包含data:
行和换行符。这个流可以被客户端作为持续的数据源来接收更新。
评论已关闭