如何知道有多less请求正在处理快递?

我试图find一种方法来知道是否有请求挂起在服务器上,所以我可以等待他们完成,以正常closures服务器。 我到目前为止所尝试的是:

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

阻止服务器接受新连接并保持现有连接。 这个函数是asynchronous的,当所有的连接都结束并且服务器发出'close'事件时,服务器终于closures了。 或者,您可以传递callback以收听“closures”事件。

我可以简单地做:

 process.on('SIGINT', function () { console.log("Exiting"); server.close(); server.on("close", function(){ console.log("Exited"); process.exit(0); }); }); 

但是我on closecallback从未被调用。 还试过:

 process.on('SIGINT', function () { console.log("Exiting"); server.close(function(){ console.log("Exited"); process.exit(0); }); }); 

但是它也不起作用。

您可以尝试使用server.getConnections获取并发连接数。 如果返回0,那么你可以安全地退出。