服务器发送事件Spring Webflux返回事件名称,以响应剩余控制器的响应

问题描述 投票:0回答:1

我正在将SSE与Reactor Flux配合使用以捕获linux系统指标并发布到浏览器(javascript eventsource)。>>

当前,问题无法将特定数据发送到特定客户端。经过多个SO帖子后,系统会告诉它在事件源中使用事件侦听器,并且服务器的响应应以event

作为响应中的键。

因为我要从服务器返回一个对象,是否足以将event

作为响应json的键之一,它将由eventsource标识。

在客户端设置唯一编号,该编号将在json响应的event

键中返回。

感谢您的帮助!

Javascript:

jsonStreamObjectHeap.addEventListener("197e08e-f9a4-4e6e-9a04-220ade08a8f4",function(e){
        $.each(message, function(index, value) {
           /*some operation*/
        });
        }

来自Rest Controller的响应:

{
   "event":"197e08e-f9a4-4e6e-9a04-220ade08a8f4",
   "data":"2048"
}

Rest Controller代码:

 Flux<Long> interval = Flux.interval(Duration.ofSeconds(1));
        interval.subscribe((i) -> testStreamList.forEach(testStream -> {
            try {
                generateTestStream(testStream, UUID);
            } catch (JsonProcessingException e) {
                e.printStackTrace();
            }
        }));
 Flux<List<TestStream>> transactionFlux = Flux.fromStream(Stream.generate(() -> testStreamList));
 return Flux.zip(interval, transactionFlux).map(Tuple2::getT2);

我正在将SSE与Reactor Flux配合使用以捕获linux系统指标并将其发布到浏览器(javascript eventsource)。当前,该问题无法将特定数据发送到特定客户端。 ...

java spring-boot spring-webflux server-sent-events
1个回答
0
投票

我发现可以从其余控制器插入到您的Flux响应中的org.springframework.http.codec.ServerSentEvent

© www.soinside.com 2019 - 2024. All rights reserved.