Как смывать Flux (Реактор)? - PullRequest
       11

Как смывать Flux (Реактор)?

0 голосов
/ 30 января 2019

Я хочу подписаться на отправленное сервером событие (см. Пример ниже)

Между клиентским браузером и сервером java находится другое приложение, которое использует промежуточное ПО для сжатия узла.

ЭтоПромежуточное ПО вызывает ERR_INCOMPLETE_CHUNKED_ENCODING, когда я пытаюсь достичь этого события, отправленного сервером через браузер.

Чтобы запустить его, я должен сделать .flush (), который описан здесь более подробно (дляприложение nodejs): https://github.com/expressjs/compression/blob/master/README.md#server-sent-events

Мой код в настоящее время выглядит следующим образом:

@RequestMapping(method = RequestMethod.GET, value = "/fluxTest", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<String> getFluxStream(HttpServletRequest request) {
    String[] randomNames = { "Steve", "Dirk", "Jens", "Rene"};

    return Flux.interval(Duration.ofSeconds(1))
               .map(sequence -> "{\"name\": \"" + randomNames[new Random().nextInt(randomNames.length)] + "\"}");
}

Как я могу вызвать .flush () в Java, как описано в документации по сжатию nodejs?

Спасибо !!!

1 Ответ

0 голосов
/ 12 февраля 2019

Если вы добавите заголовок («Cache-Control», «no-transform») к ответу, тело не будет преобразовано библиотекой сжатия.Я знаю, что это не решение этой проблемы, но, тем не менее, временное решение.

...