0

AsyncHttpClient でデフォルトのバッファ サイズを増やす方法。次のコードを使用して、ストリーミング サーバー (Http ロング プーリング) からメッセージを読み取ります。

サーバーが 8KB を超えるメッセージを送信すると、メッセージがチャンクに分割されます。

元:-

元のメッセージ:-

これは私のテストメッセージです

受信メッセージ:-

これは私の

テスト

メッセージ

バッファサイズを増やす方法はありますか? メッセージ全体を一部で受信するには?

マイコード

AsyncHttpClientConfig.Builder config = new AsyncHttpClientConfig.Builder()
    .setConnectionTimeoutInMs(120000)
    .setRequestTimeoutInMs(-1)
    .setIdleConnectionTimeoutInMs(120000)
    .setMaxConnectionLifeTimeInMs(-1);          
    AsyncHttpClient client = new AsyncHttpClient(config.build());   
    Future<String> f = client.prepareGet("http://IP:PORT/context/test").execute(
            new AsyncHandler<String>() {
                private ByteArrayOutputStream bytes = new ByteArrayOutputStream();
                @Override
                public STATE onBodyPartReceived(
                        HttpResponseBodyPart bodyPart) throws Exception {
                     String data = new String(bodyPart.getBodyPartBytes());
                     System.out.println("My Message : ---------------------------- >" + data);                  
                    return STATE.CONTINUE;
                }

            });
    f.get();
}

メッセージ本文の部分を蓄積しようとしましたが、メッセージの終わりを知るためにサーバー サイズの別のロジックが必要です。

ありがとう、

ラヴィ

4

1 に答える 1

0

AsyncHttpClient のバッファ サイズの問題ではありません。これが、応答がネットワーク経由で TCP フレームに分割される方法です。各チャンクを制御したくないが、それらをメモリにバッファリングし、本体全体のみを処理する準備ができている場合AsyncCompletionHandlerは、 low level の代わりにa を使用しますAsyncHandler

于 2016-01-08T12:40:47.023 に答える