我有一个Spring MVC控制器直接写入Writer
。
@GetMapping("/delay")
void delay(final java.io.Writer writer) throws IOException, InterruptedException {
for (int i = 0; i < 10000; i++) {
writer.write(String.valueOf(i));
writer.write(",");
writer.flush();
Thread.sleep(10);
}
}
当我使用curl
调用此方法时,尽管在每次循环迭代中调用flush()
,但只有Writer
在写入1024字节时才会刷新。有没有办法在每次循环迭代中强制刷新Writer
?
答案 0 :(得分:1)
在我看来,CoyoteWriter
冲洗效果很好。我想一个合适的单元测试会更有说服力,用Curl调用一个控制器。
我用curl和Web浏览器天真地测试了你的代码,实际上,curl正在以批量输出响应,而浏览器在正在编写时正确地读取响应。
答案 1 :(得分:0)
似乎--no-buffer
正在进行缓存,选项-N
(AAB BT 2 5 5
YUT HYT 89 52 3
JUI 10 2 3
HYIU 2 5 6
YHT JU 25 63 2
)禁用缓冲输出流。