当前位置: 首页 > 面试题库 >

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

耿学义
2023-03-14
问题内容

我有使用以下方法创建的http服务器:

var server = http.createServer()

我想关闭服务器。大概我可以通过调用以下命令来做到这一点:

server.close()

但是,这只会阻止服务器接收任何新的http连接。它不会关闭任何仍在打开的窗口。http.close()进行回调,并且直到所有打开的连接实际上都断开连接后,该回调才会执行。有办法强制关闭所有内容吗?

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

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


问题答案:

你需要

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

您还可以在子进程中运行服务器,并在需要时退出该进程。



 类似资料:
  • 我将EclipseLink与JTA一起使用。当我使用WebLogic server版本(12.2.1.3.0)运行应用程序时,遇到了以下问题 PS-WebLogic版本(12.2.1.2.0)不面临此问题

  • 关闭连接可以通过取消来自服务器逻辑的传入连接流(例如,将其下游连接到sink.canceled并将其上游连接到source.empty)。还可以通过取消IncomingConnection源连接来关闭服务器的套接字。 但考虑到和会在协商新连接时设置一次,我不清楚如何做到这一点:

  • 问题内容: 我正在尝试停止从服务器端连接到流服务器的所有客户端。其实我正在使用方法来优雅地处理它。 我正在等待通道上的信号以对gRPC执行正常停止。但是当客户端连接时会卡住。 我希望in方法可以处理它并中断for循环。如何关闭像这样的所有响应流? 问题答案: 为您的gRPC服务创建一个 全局 变量。因此,遍历各个部分: 每个gRPC服务请求都将使用此上下文(以及客户端上下文)来满足该请求 处理程序

  • 我一直试图通过Postgre DB Server运行这个批处理文件,并运行两个不同的sql文件,如下所示: 但是问题来了,有时我会得到下面的命令query1或query2的错误: 这种情况只是偶尔发生,所以我不完全确定为什么会发生。有人能解释为什么会这样,以及这个问题是否有解决办法吗?谢谢! 更新:在实际的Postgre应用程序中尝试打开远程服务器时,我有时也会遇到相同的错误:“出现错误:”服务器

  • 问题内容: 强制关闭与数据库的所有其他连接的SQL命令是什么。这是针对SQL Server 2008 问题答案: 一种使用ROLLBACK IMMEDIATE的方式 您可以使用KILL,但也要防止重新连接。

  • 正如我前面所说的,我能够在visual studio的调试模式下使其正确工作,但一旦创建了可执行文件,我就不能再读取网页了。如有任何帮助,我们将不胜感激。是什么导致了这个问题?