我有一台ExpressJs(版本4.X)服务器,我需要正确停止服务器。
由于某些请求可能需要很长时间(1-2秒),我必须拒绝新连接并等待所有正在进行的请求结束。在某些任务中间杀死服务器可能会使服务器处于不稳定状态。
我尝试过以下代码:
//Start
var app = express();
var server = https.createServer(options, app);
server.listen(3000);
//Stop
process.on('SIGINT', function() {
server.close();
});
但是,此代码不会关闭保持连接,并且某些客户端可以长时间保持连接。
那么,我该如何正确关闭所有连接呢?
答案 0 :(得分:4)
如果服务器正在关闭,您可以使用一些中间件阻止新请求。
var app = express(),
shuttingDown = false;
app.use(function(req, res, next) {
if(shuttingDown) {
return;
}
next();
});
var server = https.createServer(options, app);
server.listen(3000);
process.on('SIGINT', function() {
shuttingDown = true;
server.close(function(){
process.exit();
});
});