1

クライアント要求を非同期に処理するために AsyncContext を使用しています。私のサーバー側のコードでは、このようなことをしています。

-> Controller クラスでは、AsyncContext を取得して格納しています。

@RequestMapping(method = RequestMethod.GET, value = "/xyz/")
public void getXyz(HttpServletRequest request, HttpServletResponse response) {
final AsyncContext asyncContext = request.startAsync(request, response);
map.put("xyz", asyncContext);

-> アプリケーション内の threadPool が MQ からメッセージを受信し、asyncContext にデータを書き込みます // メッセージを JSON 文字列に変換し、 // マップからコンテキストを取得します

asyncContext.getResponse().getOutputStream().print(strMessage);
asyncContext.getResponse().getOutputStream().flush();

これが最後のチャンクであるか、例外の場合

asyncContext.complete();

さて、問題または動作は、GET呼び出しを行っているブラウザであり、サーバーが出力ストリームに書き込んでいるときにデータを受信せず、サーバーが実行されているときにのみ取得します

asyncContext.complete();

出力ストリームに書き込まれる (およびフラッシュされる) とすぐにブラウザーにデータを受信させ、asyncContext が完了するまで待たないようにします。

大気ブロードキャスターや HTML5 SSE などのソリューションを探していますが、AyncContext のみを使用しています

4

0 に答える 0