2
我想找到一種方法來知道是否有請求在服務器上掛起,所以我可以等待它們完成以便正常關閉服務器。我到目前爲止所嘗試的是:如何知道有多少請求仍在通過快遞處理?
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);
});
});
但它也不起作用。