Я знаком с Spring Flux + SSE, пытался написать код для потоковой передачи данных.
Здесь есть две проблемы:
- Когда я выполняю запрос в Chrome, соединение не закрывается.в течение некоторого времени (круг загрузки вращается), но я использую обычный
Flux.fromIterable
, который испускает полный сигнал в конце массива. Он закрывает коммит на некоторое время (около 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.