如何获取 Node 中当前打开的套接字的数量?

How to get a count of the current open sockets in Node?

我正在使用 request 模块来抓取 URL 列表并希望 将打开的套接字数限制为 2:

var req = request.defaults({
   forever: true,
   pool: {maxSockets: 1}
});

req(options, function(error, response, body) {

 ... code ...

 done();

但是,当遍历一组 URL 并向每个 URL 发出新请求时,这似乎不起作用。

有没有办法获取当前打开的套接字数来测试一下?

我相信 maxSockets 映射到 http.Agent.maxSockets,这限制了并发请求的数量 到同一来源 (host:port)。

This comment,来自 request 的开发者,建议相同:

actually, pooling controls the agent passed to core. each agent holds all hosts and throttles the maxSockets per host

换句话说,你不能用它来限制一般的并发请求数。为此,您需要使用外部解决方案,例如使用 limiter or async.queue.