У меня есть сервер, отправляющий события, отправленные сервером.Когда я использую клиент на основе браузера, все работает должным образом, включая автоматическое переподключение.
Моя проблема заключается в том, что при использовании следующего клиентского приложения на основе 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
Клиент генерирует исключение, и он не пытается восстановить соединение.)