服务器发送的事件具有自动重新连接(Spring WebFlux客户端)

时间:2019-05-21 18:42:14

标签: spring-webflux server-sent-events

我有一个服务器调度服务器发送的事件。当我使用基于浏览器的客户端时,一切正常,包括自动重新连接。

我的问题是,当我使用以下基于Spring WebFlux的客户端应用程序时,一切正常,希望自动重新连接:

WebClient client = WebClient.builder().baseUrl("/register/")
         .clientConnector(new ReactorClientHttpConnector(HttpClient.newConnection()))
        .build();
ParameterizedTypeReference<ServerSentEvent<String>> type = new ParameterizedTypeReference<ServerSentEvent<String>>() {
};

Flux<ServerSentEvent<String>> eventStream = client.get()
        .uri("/client-id")
        .accept(MediaType.TEXT_EVENT_STREAM)
        .retrieve()
        .bodyToFlux(type)
        .repeat();

eventStream.subscribe(...)

我的问题:如何重现浏览器中内置的“自动重新连接”功能?

(我以为repeat()会这样做,但不幸的是不会:当服务器关闭时,客户端会抛出reactor.netty.http.client.PrematureCloseException: Connection prematurely closed DURING response异常,并且它不会尝试重新连接。)

0 个答案:

没有答案