如何正确closuresExpressJs服务器?

我有一个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(); }); 

但是,这段代码并没有closures保持连接,有的客户端可以长时间保持连接。

那么,我该如何正确closures所有连接?

如果服务器正在closures,您可以使用一些中间件来阻止新的请求。

 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(); }); });