Spring Boot WebFlux - 如何在向客户端的流输出中不包含“data:”?

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

我正在使用 Spring Boot 版本 2.7.10 和

WebFlux
。 我有一个
Object
列表,我想迭代列表中的每个元素,对于每个元素,将对象序列化为 JSON 并将 JSON
{...}
发送到 Web 浏览器客户端。

这是 Spring 控制器代码:

@RequestMapping(path = "/test", method = RequestMethod.GET, produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public void Flux<String> createFluxForCoverageOrLayerObject(List<Object> objects) throws PetascopeException {
        Flux<String> result =
                Flux.fromIterable(objects)
                    .map(object -> {
                        String jsonObj = this.createProprietaryObjectInJson(object);
                        return Optional.of(jsonObj);
                    })
                    .filter(Optional::isPresent)  // Filter out Optional.empty() values
                    .map(Optional::get)  // Unwrap the value from the Optional
                    .concatWith(Mono.just("Complete")) // Signal the end of the stream
                    .doOnComplete(() -> log.debug("Proprietary Capabilities stream has completed sending all items."));

        return result;
    }

在客户端,我使用带有

fetch()
API 的 javascript 代码,并且在收到的消息中始终以
data: 
作为前缀。

我知道这是 SSE(服务器发送事件)标准的一部分,但是我怎样才能从服务器端摆脱它

data: 
并且它不会破坏 WebFlux 的流媒体功能?

换句话说,是强制数据:发送给客户端吗?

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

由于

data:
属于标准,所以我决定保持原样,在客户端中,它可以在收到消息时用空字符串替换
data:

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