0

再利用可能な非同期http解析コードが必要です。nettyには、解析部分だけのAPIが含まれている可能性がありますか?(私は常に、パーサーは分離して再利用可能であり、フレームワークに結び付けられてはならないという信念を持っているので、nettyも再利用可能であることを願っています)。

すなわち。そのようにバイトでフィードするのは素晴らしいことであり、まだ十分なバイトがない場合はnullを返します

private byte[] previousData;

byte[] data = incomingMergedWithPrevious(previousData);
HttpResponse resp = httpResponseParser.parse(data);
if(resp == null) {
    return; //we do not have full data to parse yet
}

//otherwise fire the response to someone else.

または、コードを別の方法で再利用できるかもしれません。私が知っているのは、非同期のものであるため、まだすべてのhttpヘッダーを持っているとは限らないバイトを取得することだけです。ものを解析する方法はありますか?

注:また、チャンクを実行したいので、毎回HttpResponseを返す必要があるかどうかはわかりませんが、1つのサブクラスがHttpHeadersで、別のサブクラスがHttpChunkであるリストである可能性があります。

ありがとう、ディーン

4

2 に答える 2

2

DecoderEmbedderは、おそらくHttpMessageDecoderと組み合わせて使用​​できます。DecoderEmbedderページに例があります。pollAllメソッドを使用したいようです。HttpResponseメッセージとHttpChunkメッセージを別々に処理する場合は、返された各オブジェクトのタイプを確認する必要があります。

于 2012-12-12T09:17:49.940 に答える
0

EmbeddedChannel4.1.xシリーズでは、これへの道はクラスを経由することです。それにハンドラーの束を追加してから、生のhttpバイトを含むsを使用してwriteInboundXXXメソッドを呼び出します。ByteBufたとえば、リクエストを解析するnew EmbeddedChannel(new HttpRequestDecoder, new MyHandler)と、ハンドラーはデコードされたを受信しますHttpObjects

于 2018-10-16T22:42:57.720 に答える