7

Netty で HTTP サーバーを作成しています。サーバーのブートストラップを作成するときにキープアライブ オプションを設定します。 bootstrap.setOption("child.keepAlive", true); HTTP 応答を書き込むたびに、keep-alive ヘッダーを設定し、応答を書き込んだ後にチャネルを閉じます。

rep.setHeader("Connection", "keep-alive");
channel.write(rep).addListener(ChannelFutureListener.CLOSE);

チャンネルを閉じるべきかどうかわかりません。

4

2 に答える 2

8

HTTP 1.1 サーバーを作成していると仮定すると、デフォルトでは、応答を送信した後も接続を開いたままにしておく必要があります。何らかの理由でとにかく閉じることにした場合は、含める必要があります

Connection: close

応答で。

ご了承ください

bootstrap.setOption("child.keepAlive", true);

ソケットのキープアライブ オプションをオンにし、HTTP とは関係ありません。むしろ、「実際の」トラフィックがない場合に切断された接続を検出するための一種のウォッチドッグ メカニズムです。

于 2012-11-28T11:27:40.673 に答える
3

コンテンツの長さも指定する必要があることに注意してください。

  response.headers().set(CONTENT_LENGTH, response.content().readableBytes());

受信者がメッセージがどこで終了したかを把握できるようにします。それ以外の場合、受信はメッセージを待ち続けます。

そして、明確にするために、「.addListener(ChannelFutureListener.CLOSE);」と書くべきではありません。接続を開いたままにしたい場合。

于 2013-06-21T09:48:23.577 に答える