услуга занимает много времени, поэтому я хочу ответить клиенту на некоторую информацию, пока каждый маленький шаг сделан. Ниже приведена демонстрация, я пытаюсь ответить клиенту с 3 номерами в трех пакетах с интервалом в одну секунду. но это не работает, после в течение 3 секунд, клинет получает 3 нМ в одной партии.
@Bean
public RouterFunction<ServerResponse> timerRouter() {
timeHandler = new TimeHandler();
return route(GET("/print"),ProcessHandler::printInterval);
}
@Component
public class ProcessHandler {
public Mono<ServerResponse> printInterval(ServerRequest serverRequest) {
Flux.from(Flux.just("1","2","3")).doOnNext(System.out::println);
List<String> list = Arrays.asList("1","2","3");
return ok().contentType(MediaType.TEXT_EVENT_STREAM).header("Access-Control-Allow-Origin", "*").body( // 1
Flux.fromIterable(list).map(l->
{
try {
TimeUnit.MILLISECONDS.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return l;
}),String.class);
}
}