Отправленные сервером события с автоматическим переподключением (клиент Spring WebFlux) - PullRequest
0 голосов
/ 21 мая 2019

У меня есть сервер, отправляющий события, отправленные сервером.Когда я использую клиент на основе браузера, все работает должным образом, включая автоматическое переподключение.

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

...