応答を閉じる方法はありますか? res.end()
を使用できますが、実際にはソケットを閉じません。
私が達成したいこと:私はネットワークとインターフェースするJavaプログラムを書いています、そして私はこれのためにnode.jsサーバーを書いています。Javaコード:
_String line;
while((line = in.readLine()) != null) {
System.out.println("RES: "+line);
}
_
しかし、これはただハングし続けます。エンド接続はなく、ソケットからの入力を待っています。
ノード:
_exports.getAll = function (req, res) {
res.set("Content-Type", "text/plain");
res.set(200);
res.send(..data..);
res.end();
}
_
ただし、res.end()
は接続を閉じません。前に述べたように、Javaは次に何かがあると考え続けているため、whileループでスタックします。
ありがとうございました
デフォルトのキープアライブ戦略の代わりに、接続を閉じるようにHTTPヘッダーを設定することで解決しました。
res.set("Connection", "close");
接続を閉じたいだけの人がこれを見つけた場合は、 res.socket または res.connection を使用して net.Socket を取得できます。 = destroy メソッドに付属するオブジェクト:
res.connection.destroy();