Java EE サーブレット/jsp では、クライアントは 1 つの http リクエストに対して 1 つの http レスポンスを取得できることがわかっています。http 応答の長さが不明なものを実装したいと考えています。クライアントが最初の http 要求を送信した後、サーバーがクライアントのデータをプッシュし続けることを望みます。その場合、AJAX は非常に重いため、AJAX を使用したくありません。
たとえば、Web サーバーからログ メッセージを取得できる Web ページを作成したい場合、別のモジュールからログ メッセージが生成されたときに、ログ メッセージが Web サーバーによって送信される可能性があります (この場合、時間間隔は不明です。ここでは、通常のタイマー チェックは適切ではないと仮定します)。ログ メッセージは Web ブラウザに追加されます。これは、Web ブラウザが更新できないことを意味します。例:
午後 12:00 のログ ..... 午後 12:03 のログ ..... 午後 12:04 のログ ..... . . .
1 つの http 要求のみを送信し、引き続き http 応答を取得することで、どのようにそれを行うことができますか?
@dystroy
doPost/doGet が終了する前に、printwriter を複数回 (新しいログ データがある場合) フラッシュできるということですか?
構文エラーは無視してください。私はIDEを使用しませんでした。
protected void doPost(HttpServletRequest req, HttpServletResponse resp){
PrintWriter pw = resp.getWriter();
pw.println("<html><body>Testing for the streaming.</body></html>");
pw.flush();
/*
The syntax could not be correct, please focus on logic.
This while loop check the log sent by web server is finised or not and flush the data to the
client, after that the javascript will change the content of the inner Html. Is the logic below
valid?
*/
while(!log.finish()){
pw.println("document.setInnerHtml("+log.newLog()+")");
pw.flush();
}
}