该服务非常耗时,因此我想在完成每一个小步骤的同时给客户端一些信息。 以下是演示,我尝试以一秒为间隔,分三批向客户发送3个数字。 但是它不起作用,等待3秒钟后,clinet会分批接收3个nmuber。
@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);
}
}