Как я могу ответить на запрос несколькими партиями на весенний webflux? - PullRequest
0 голосов
/ 12 октября 2019

услуга занимает много времени, поэтому я хочу ответить клиенту на некоторую информацию, пока каждый маленький шаг сделан. Ниже приведена демонстрация, я пытаюсь ответить клиенту с 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);
    }
}
...