我有一个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();
});
但是,此代码不会关闭保持活动连接,并且某些客户端可以长时间保持连接.
那么,我该如何正确关闭所有连接?
解决方法:
如果服务器正在关闭,您可以使用一些中间件来阻止新请求.
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();
});
});
原文地址:https://codeday.me/bug/20190624/1275843.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。