Как получить количество текущих открытых сокетов в Node?

Я использую модуль запроса для сканирования списка URL-адресов и хотел бы ограничить количество открытых сокетов до 2:

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

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

 ... code ...

 done();

однако при циклическом просмотре массива URL-адресов и выдаче нового запроса каждому - это, похоже, не работает.

Есть ли способ получить текущее количество открытых сокетов, чтобы проверить это?

1 ответ

Решение

Я полагаю, что maxSockets карты для http.Agent.maxSockets, который ограничивает количество одновременных запросов одним и тем же источником (host:port).

Этот комментарий от разработчика request, предлагает то же самое:

на самом деле, пул управляет агентом, переданным ядру. каждый агент содержит все хосты и регулирует maxSockets для каждого хоста

Другими словами, вы не можете использовать его для ограничения количества одновременных запросов в целом. Для этого вам нужно использовать внешнее решение, например, используя limiter или же async.queue,

Другие вопросы по тегам