チャンクされた応答を生成するために、play フレームワークを使用しています。コードは次のとおりです。
class Test extends Controller {
public static void chunk() throws InterruptedException {
for (int i = 0; i < 10; i++) {
String data = repeat("" + i, 1000);
response.writeChunk(data);
Thread.sleep(1000);
}
}
}
ブラウザで にアクセスするhttp://localhost:9000/test/chunk
と、表示されるデータが 1 秒ごとに増えていることがわかります。しかし、データを受信して処理する JavaScript 関数を作成すると、すべてのデータが受信されるまでブロックされることがわかりました。
コードは次のとおりです。
$(function(){
$.ajax(
"/test/chunked",
{
"success": function(data, textStatus, xhr) {
alert(textStatus);
}
}
);
});
すべてのデータが受信された 10 秒後に、メッセージ ボックスがポップアップ表示されます。
ストリームを取得してデータを時間内に処理する方法は?