微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 如何正确关闭ExpressJs服务器?

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐