我有一个服务器调度服务器发送的事件。当我使用基于浏览器的客户端时,一切正常,包括自动重新连接。
我的问题是,当我使用以下基于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
异常,并且它不会尝试重新连接。)