Flux + Server Side Events - PullRequest
       6

Flux + Server Side Events

0 голосов
/ 28 мая 2018

Я знаком с Spring Flux + SSE, пытался написать код для потоковой передачи данных.

Здесь есть две проблемы:

  1. Когда я выполняю запрос в Chrome, соединение не закрывается.в течение некоторого времени (круг загрузки вращается), но я использую обычный Flux.fromIterable, который испускает полный сигнал в конце массива.
  2. Он закрывает коммит на некоторое время (около 1 минуты).Вероятно, его тайм-аут где-то.Ответ должен быть закрыт только при возникновении события OnComplete.

    @Controller("/")
    @Validated
    public class HelloController {
    
        @Produces(MediaType.TEXT_EVENT_STREAM) // add 'application/stream+json'
        @Get("/hello/{name}")
        public Flux<Hello> hello(@NotBlank String name) {
    
            List<Hello> list = new ArrayList<>();
    
            list.add(new Hello("test1", 1));
            list.add(new Hello("test2", 2));
    
            return Flux.fromIterable(list).doOnComplete(() -> {
                System.out.println("response should be closed here!");
            });
        }
    }
    

-Также, пожалуйста, добавьте поддержку application/stream+json content-type

-И сервер поддержкипобочные события для клиента через Flux.

1 Ответ

0 голосов
/ 29 мая 2018

Насколько мне известно, тип контента application / stream + json не является официальным типом мультимедиа.Существует черновик, пытающийся зарегистрировать этот тип, но он относится к потокам действий https://tools.ietf.org/id/draft-snell-activity-streams-type-01.html

Тест https://github.com/micronaut-projects/micronaut-core/commit/b71f63aa8f2b2f00bdcbc25e60d9112321d8f003#diff-29dce542bb2e6326257895b376220c1aR16

Демонстрирует ваш вариант использования, реализованный с MediaType.APPLICATION_JSON_STREAM, который имеет тип application /x-json-stream

Почему Chrome продолжает вращаться, это потому, что инструменты Micronaut поддерживают работу и поддерживают соединение для удовлетворения дальнейших запросов

...