强制关闭node.js http服务器中的所有连接
我有使用以下方法创建的http服务器:
var server = http.createServer()
我想关闭服务器。大概我可以通过调用以下命令来做到这一点:
server.close()
但是,这只会阻止服务器接收任何新的http连接。它不会关闭任何仍在打开的窗口。http.close()
进行回调,并且直到所有打开的连接实际上都断开连接后,该回调才会执行。有办法强制关闭所有内容吗?
对我来说,问题的根源在于我有Mocha测试,该测试在其设置(beforeEach()
)中启动http服务器,然后在其拆卸(afterEach()
)中将其关闭。但是,由于仅调用server.close()
不会完全关闭设备,因此后续操作http.createServer()
通常会导致EADDRINUSE
错误。等待close()
完成也不是一种选择,因为打开的连接可能会花费很长时间。
我需要某种方式来强制关闭连接。我可以在客户端执行此操作,但是可以强制关闭所有测试连接,但是我宁愿在服务器端执行此操作,即只是告诉http服务器硬关闭所有套接字。
回答:
你需要
- 订阅
connection
服务器事件并将打开的套接字添加到数组 - 通过订阅它们的
close
事件并从数组中删除关闭的套接字来跟踪打开的套接字 destroy
需要终止服务器时,在所有其余打开的套接字上调用
您还可以在子进程中运行服务器,并在需要时退出该进程。
以上是 强制关闭node.js http服务器中的所有连接 的全部内容, 来源链接: utcz.com/qa/421755.html