大佬教程收集整理的这篇文章主要介绍了如何立即关闭Node.js http(s)服务器?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在特定情况下,我需要以编程方式关闭此服务器。我目前做的是调用它的close()函数,但这并没有帮助,因为它等待任何保持活着的连接首先完成。
所以,基本上,这会关闭服务器,但只有在最短等待时间120秒后。但我想要服务器立即关闭 – 即使这意味着分解与当前处理的请求。
我不能做的是一个简单的
process.exit();
因为服务器只是应用程序的一部分,而应用程序的其余部分应该保持运行。我在寻找的是概念上的东西,如server.destroy();或类似的东西。
我该如何实现呢?
PS:连接的保持活动超时通常是必需的,因此它不是减少此时间的可行选项。
此外,您需要侦听套接字的关闭事件,如果它自然离开,将其从数组中删除,因为它的保持活动超时时间用完。
我写了一个小样本应用程序,您可以用来演示此行为:
// Create a new server on port 4000 var http = require('http'); var server = http.createServer(function (req,res) { res.end('Hello World!'); }).listen(4000); // Maintain a hash of all connected sockets var sockets = {},nextSocketId = 0; server.on('connection',function (socket) { // Add a newly connected socket var socketId = nextSocketId++; sockets[socketId] = socket; console.log('socket',socketId,'opened'); // Remove the socket when it closes socket.on('close',function () { console.log('socket','closed'); delete sockets[socketId]; }); // Extend socket lifetime for demo purposes socket.setTimeout(4000); }); // Count down from 10 seconds (function countDown (counter) { console.log(counter); if (counter > 0) return setTimeout(countDown,1000,counter - 1); // Close the server server.close(function () { console.log('Server closed!'); }); // Destroy all open sockets for (var socketId in sockets) { console.log('socket','destroyed'); sockets[socketId].destroy(); } })(10);
基本上,它做的是启动一个新的http服务器,从10到0,并在10秒后关闭服务器。如果未建立连接,服务器将立即关闭。
如果连接已建立并且它仍然打开,则它被销毁。如果它已经自然死亡,则在该时间点仅打印出消息。
以上是大佬教程为你收集整理的如何立即关闭Node.js http(s)服务器?全部内容,希望文章能够帮你解决如何立即关闭Node.js http(s)服务器?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。