我正在尝试找到一种方法来了解服务器上是否有待处理的请求,以便我可以等待它们完成以便正常关闭服务器。到目前为止,我尝试过的是:
var express = require("express");
var app = express();
var count = 0;
app.use(function(req, res, next){
count++;
console.log(count);
next();
res.on("end", function(){ //PROBLEM HERE! This event does not exists!!!
count = count - 1;
console.log(count);
});
});
app.get("/", function(req, res, next){
res.send("Ok!");
});
process.on('SIGINT', function () {
if(count === 0) process.exit();
else console.log("Can't shutdown! Pending requests...");
});
var server = app.listen(8021);
那么处理这种情况的最佳方法是什么???我被困住了。
编辑:这应该是一件很容易的事。根据http://nodejs.org/api/net.html#net_server_close_callback
停止服务器接受新连接并保持现有连接。这个函数是异步的,当所有连接结束并且服务器发出一个'close'事件时,服务器最终关闭。或者,您可以传递一个回调来监听“关闭”事件。
我可以简单地做:
process.on('SIGINT', function () {
console.log("Exiting");
server.close();
server.on("close", function(){
console.log("Exited");
process.exit(0);
});
});
但是我的回调on close
永远不会被调用。也试过:
process.on('SIGINT', function () {
console.log("Exiting");
server.close(function(){
console.log("Exited");
process.exit(0);
});
});
但它也不起作用。