我正在使用 node.js请求模块来发出多个发布请求。
这个模块有连接池吗?
我们可以管理这个连接池吗?
我们可以关闭打开的连接吗?
我们如何处理socket hang up error
请求没有连接池。但是,http 模块(请求使用)会:
在节点 0.5.3+ 中,有一个新的 HTTP 代理实现,用于池化 HTTP 客户端请求中使用的套接字。
默认情况下,每个主机限制为 5 个并发连接。当前代理实现存在一个问题,当您尝试打开太多连接时会导致出现挂起错误。
您可以:
http.globalAgent.maxSockets
.{pool: false}
给请求。首先要有一个 HTTP 代理有几个原因:
maxSockets
实际上取决于您所针对的主机。如果其他主机处理它,node.js 将非常乐意打开 1000 个并发连接。代理的行为在 node.js 文档中进行了解释:
当前的 HTTP 代理还默认客户端请求使用 Connection:keep-alive。如果没有挂起的 HTTP 请求正在等待套接字变得空闲,则关闭套接字。这意味着节点的池在负载下具有保持活动的好处,但仍然不需要开发人员使用保持活动手动关闭 HTTP 客户端。
node.js 的异步架构使得打开新连接变得非常便宜。