如何pipe理node.js请求连接池?

我正在使用node.js 请求模块发出多个请求。

这个模块是否有连接池?

我们可以pipe理这个连接池吗?

我们可以closures打开的连接?

我们如何处理socket hang up error

请求没有连接池。 但是, http模块 (请求使用)会:

在节点0.5.3+中,有一个HTTP代理的新实现,它用于合并HTTP客户端请求中使用的套接字。

默认情况下,每个主机有5个并发连接的限制。 当前的代理实现有一个问题 ,当您尝试打开太多的连接时会导致挂起错误。

你可以:

  • 增加最大连接数: http.globalAgent.maxSockets
  • 完全禁用代理:通过{pool: false}来请求。

有一个HTTP代理首先有几个原因:

  • 它可以防止你意外地打开数千个与主机的连接(被认为是攻击)。
  • 池中的连接将保持打开状态,以便HTTP 1.1保持连接。
  • 大多数情况下, maxSockets真的取决于你的目标主机。 如果另一个主机处理它,node.js将非常乐意打开1000个并发连接。

代理的行为在node.js文档中进行了解释:

当前的HTTP代理还默认使用Connection:keep-alive的客户端请求。 如果没有待处理的HTTP请求在套接字上等待释放,套接字将被closures。 这意味着节点池在加载时具有保持活动的好处,但仍然不需要开发人员使用保持活动手动closuresHTTP客户端。

node.js的asynchronous体系结构使得打开新连接非常便宜。