如何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体系结构使得打开新连接非常便宜。