为什么客户端 HTTP 连接没有关闭?

Why are client HTTP connections not getting closed?

我有一个 node.js (12.18.4) 服务器应用程序,用于侦听 HTTP 连接。我们的测试使用 mocharequest,并且我们与服务器建立了很多连接。在测试结束时,我们关闭了服务器,但首先我们通过调用 server.getConnections 并断言该值为 0 来确保所有连接都已关闭。绝大多数情况下是这样,但是 有时返回的值是非零的,通常在60-70左右。我们在测试期间提出了 60-70 多个请求。没有测试失败或卡住。

我如何确定为什么服务器认为这些连接仍然存在?

我质疑断言活动服务器连接数的价值 — 如果您的所有测试都已成功完成,如果您的 OS 清理某些 TCP 连接很慢,这会有什么不同?

无论如何,我会放弃 getConnections 检查并直接调用 server.close(cb)

如果没有活动连接,则立即调用 close 回调,或者等待所有剩余连接关闭后再触发。如果连接没有耗尽,应该会发生测试超时。