Spring Webflux TEXT_EVENT_STREAM_VALUE не транслируется - PullRequest
0 голосов
/ 25 апреля 2019

Я новичок в реактивном программировании и Spring Webflux, я хочу попробовать MediaType.TEXT_EVENT_STREAM_VALUE, поэтому у меня есть следующие коды:

@GetMapping(value = "/stream", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<Menu> streamAllAvailableMenu() {
    return menuService.findAll();
}

Что я ожидаю получить в результате, я называю этот API в браузере (причина использования браузера не в том, что все клиенты поддерживают потоковую передачу в реальном времени), когда я изменяю свои данные в mongodb, он должен немедленно отражать изменения в моем браузер, как потоковое в реальном времени с использованием технологии веб-сокетов, но на самом деле это ничего не изменило.

Я неправильно понял этот потоковый механизм или что-то упустил?

Я использую полные реактивные стеки:

Spring webflux 
Netty
Spring Data MongoDB Reactive

1 Ответ

0 голосов
/ 26 апреля 2019

Вариант использования, который вы описываете, не работает через веб-сокет (но обычный HTTP с событиями, отправленными сервером). Чтобы добиться того, что вы пытаетесь сделать, вам нужно усилить поддержку настраиваемых курсоров в Spring Data MongoDB .

Для этого вам нужно адаптировать определение вашего репозитория следующим образом:

public interface PersonRepository extends ReactiveMongoRepository<Person, String> {

  @Tailable
  Flux<Person> findByFirstname(String firstname);

}
...