2

while (true)データが browser に送信されるJSP があります。コードスニペット

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

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

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

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

4

1 に答える 1

0

JSP は実行時にサーブレット オブジェクトであり、JSP スクリプトレット/式はサーブレット オブジェクトの service() メソッドの一部として呼び出されます。

この場合、JSP ページにアクセスすると、service() メソッドが呼び出され、アプリ サーバー (InterruptedException) によってスレッドが中断されるまでデータがアウト ストリームに追加され続け、最終的にページがレンダリングされ、データが一度に表示されます。

アプリサーバーのサポートを活用できる HttpServlet を拡張して CommetServlet を実装することを検討する必要があります。

App Server コメットのサポート例:

于 2013-04-13T23:49:45.723 に答える