私は、Writer
に直接書き込むSpring MVCコントローラを持っています。SpringブートでOutputStream/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
を強制的にフラッシュする方法はありますか?
'Writer'クラス(またはインターフェイス)の完全な名前は何ですか?私はそれを見つけるように見えない。とにかく、1024バイトごとにしかフラッシュしないBufferedOutputStreamをラップするかもしれません(しかし、強制的にフラッシュする方法があるはずです)。 –
@JeremyGrandはい、それは 'java.io.Writer'です。 –
flush()は、基になる 'org.apache.catalina.connector.CoyoteWriter'と' org.apache.catalina.connector.OutputBuffer'に正しく伝播されますが、1kのデータが書き込まれるまで応答は返されません応答 –