3

データがブラウザに送信される while (true) を持つ JSP があります。

while (true) {
    out.print("pushing some data to browser");
    out.flush();

    try {
        Thread.sleep(1000);
    } catch (InterruptedException e) {
    }
}

ほとんどの場合は機能しますが、データが 1 秒間隔でブラウザに送信されないことはめったにありません。

キューに入れられるのではなく、すべてのデータを同時にスローします。

4

2 に答える 2

0

追加してみてください

response.setBufferSize(0);

コードブロックの先頭にあります。応答はデフォルトで常にバッファリングされます。この行を追加して、バッファーを無効にすることができます。

于 2013-03-09T15:30:49.633 に答える
0

Roman C は正しく、投稿されたとおりにコンパイルされません。しかし、それを修正すると、Firefox と Chrome で動作することがわかります。しかし、IEは違います。かなりの量のテキストを取得してレンダリングを開始するまで待機します。

IE needs some text here. zzzzzzzzzzzzzzz zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
zzzzzzzzzzzzzzzzz zzzzzzzzzzzzzzzzzzzzzzzzzzzz zzzzzzzzzzzzzzzzzzzzzzzz zzzzzzzzzzzzzzzzzzzzzz zzzzzzzzzz
zzzzzz I guess this enough for IE to start to render now.
<%
  int x = 0;
  while (x < 10) {
     out.print("pushing some data to browser");
     out.flush();
     try {
          Thread.sleep(1000);
     } catch (InterruptedException e) {
  }
  x++;
}
%>
于 2013-03-09T16:26:07.443 に答える