gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 21:59:34 26 4
gpt4 key购买 nike

我创建了一个 http 服务器:

var server = http.createServer()

我想关闭服务器。大概我会通过调用来做到这一点:

server.close()

但是,这只会阻止服务器接收任何新的 http 连接。它不会关闭任何仍然打开的。 http.close() 接受一个回调,并且直到所有打开的连接实际断开后才会执行该回调。有没有办法强制关闭一切?

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

我需要一些方法来强制关闭连接。我可以在客户端执行此操作,但会强制关闭所有测试连接,但我宁愿在服务器端执行此操作,即只告诉 http 服务器硬关闭所有套接字。

最佳答案

你需要

  1. 订阅服务器的 connection 事件并将打开的套接字添加到数组中
  2. 通过订阅它们的 close 事件并从数组中删除关闭的套接字来跟踪打开的套接字
  3. 当您需要终止服务器时,在所有剩余打开的套接字上调用 destroy

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

关于node.js - 强制关闭 node.js http 服务器中的所有连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18874689/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com