netty 3.6 に基づいて、小さな HTTP サーバーを Java デスクトップ アプリケーションに実装しています。ここまでで、基本的な HTTP サーバー レイアウトの作成に成功しました。さまざまなテキスト ベースのファイルをブラウザー ベースのクライアントに送信できます。
私の netty サーバー パイプライン ファクトリでは、次のように新しいチャネル パイプラインを作成します。
pipeline.addLast("decoder", new HttpRequestDecoder());
pipeline.addLast("aggregator", new HttpChunkAggregator(1048576));
pipeline.addLast("encoder", new HttpResponseEncoder());
pipeline.addLast("handler", new HttpServerHandler());
私のHttpServerHandler
クラスでは、次のようにテキストデータをクライアントに送信します。
HttpResponse response = new DefaultHttpResponse(HTTP_1_1, OK);
response.setHeader(CONTENT_TYPE, contentType + "; charset=UTF-8");
response.setHeader(PRAGMA, "no-cache");
response.setContent(ChannelBuffers.copiedBuffer(responseText, CharsetUtil.UTF_8));
if(keepAlive)
{
response.setHeader(CONTENT_LENGTH, response.getContent().readableBytes());
response.setHeader(CONNECTION, HttpHeaders.Values.KEEP_ALIVE);
}
ChannelFuture future = e.getChannel().write(response);
良い。さらに、クライアントにバイナリ データ (画像など) を送信したいと考えています。これを達成する方法に関するオンラインの例が見つからなかったため、2 つの質問があります。
- テキスト データとバイナリ データの両方をクライアントに送信できるようにするには、チャネル パイプラインをどのように変更する必要がありますか?
HttpServerHandler
バイナリ ファイルをクライアントに送信するためにクラスを変更する方法は?