服务器使用Spring WebFlux和EventSource发送事件

时间:2018-08-23 10:09:13

标签: server-sent-events spring-webflux eventsource

我正在处理服务器发送事件。

参考链接:http://sinhamohit.com/writing/spring-boot-reactive-sse

上面的示例包括带有Spring Boot和WebFlux的SSE。

Spring WebFlux和HTML5 EventSource是否有可用的示例?

1 个答案:

答案 0 :(得分:1)

使用WebFlux创建简单的项目。 下面是服务器发送事件的控制器方法:

@GetMapping(value = "/notifyonEvent", produces = 
MediaType.TEXT_EVENT_STREAM_VALUE)  
public Flux<String> getData() {
Random r = new Random();
int low = 0;
int high = 50;
return Flux.fromStream(Stream.generate(() -> r.nextInt(high - low) + low)
    .map(s -> String.valueOf(s))
    .peek((msg) -> {
        LOGGER.info(msg);
    }))
    .map(s -> s)
    .delayElements(Duration.ofSeconds(1));
}

客户端

var source = new EventSource("YOURAPP_URL/notifyonEvent");
source.onmessage = function(event) {
  console.log(event.data);
};