强制关闭node.js http服务器中的所有连接

我有一个http服务器创建使用:

var server = http.createServer()

我想关闭服务器.大概我会这样做:

server.close()

但是,这只会阻止服务器接收任何新的http连接.它不关闭任何仍然是开放的. http.close()接受回调,并且在所有打开的连接实际上已断开连接之前,该回调不会执行.有办法强制关闭一切吗?

问题的根源在于我有Mocha测试,在他们的设置(beforeEach())中启动一个http服务器,然后在拆分(afterEach())中关闭它.但是由于刚刚调用server.close()将不会完全关闭,所以后续的http.createServer()通常会导致EADDRINUSE错误.等待close()完成也不是一个选择,因为开放连接可能需要很长时间才能超时.

我需要一些强制关闭连接的方法.我可以做这个客户端,但是迫使我的所有测试连接关闭,但我宁愿在服务器端执行操作,即只是告诉HTTP服务器硬关闭所有套接字.

解决方法

你需要

>订阅服务器的连接事件,并将打开的套接添加到数组
通过订阅他们的关闭事件并从阵列中移除已关闭的事件来跟踪打开的套接
>当您需要终止服务器时,在所有剩余的开放套接字上调用destroy

您也有机会在子进程中运行服务器,并在需要时退出该进程.

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...