からの情報に基づく:
--
var express = require('express');
var app = express();
var server = app.listen(1337);
var shutting_down = false;
app.use(function (req, resp, next) {
if(!shutting_down)
return next();
resp.setHeader('Connection', "close");
resp.send(503, "Server is in the process of restarting");
// Change the response to something your client is expecting:
// html, text, json, etc.
});
function cleanup () {
shutting_down = true;
server.close( function () {
console.log( "Closed out remaining connections.");
// Close db connections, other chores, etc.
process.exit();
});
setTimeout( function () {
console.error("Could not close connections in time, forcing shut down");
process.exit(1);
}, 30*1000);
}
process.on('SIGINT', cleanup);
process.on('SIGTERM', cleanup);
Connection: close
ヘッダーは、次に HTTP 要求を送信するときに接続を閉じるように指示するために使用されますkeep-alive
。詳細はこちら: http://www.jmarshall.com/easy/http/#http1.1s4
接続を閉じる他の方法があるかどうかはわかりませんkeep-alive
。keep-alive
接続が閉じられない限り、ノード プロセスはハングします。デフォルトのアイドル タイムアウトは 2 分です。より詳しい情報。node.jskeep-alive
タイムアウトについて (タイムアウトの変更を含む): nodejs サーバーで HTTP Keep-Alive タイムアウトを設定する方法