我试图在应用程序关闭之前显示一些信息。因此,我创建了一个事件,当服务器收到 SIGINT
时将触发该事件。如果没有建立连接,此代码将起作用。但是,如果存在连接 localhost:4040
,服务器将永远不会关闭,因为服务器认为仍然存在事件连接(连接计数将为 1)。我不明白的是为什么 Node.js 在请求已经完成时仍然认为存在事件连接。有什么方法可以终止连接或者我当前关闭请求的方法是错误的?
这是我想要完成的代码:
var http = require('http')
var server = http.createServer(function(req, res){
res.end('test');
}).listen(4040);
process.on( 'SIGINT', function(){
server.getConnections(function(err, count){
console.log('connection:' + count);
})
server.close(function(){
process.exit();
});
})
我的一些想法:
- 保存我收到的套接字的副本并单独关闭它们
希望有人能给我一些解决这个问题的建议。谢谢
最佳答案
- 存储您拥有的所有套接字并手动关闭它们
- 使用 process.exit() 并销毁整个进程
- 使用域并执行可怕的已弃用的domain.dispose()
关于Node.js server.close() 由于事件连接而不会关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21493793/