Saltar al contenido

Búsqueda de DNS de Node.js: ¿cómo configurar el tiempo de espera?

Esta noticia fue probado por nuestros expertos para que tengas la garantía de la exactitud de nuestra esta noticia.

Solución:

No estoy seguro de ninguna forma de establecer un tiempo de espera directamente en la llamada de función, pero podría crear un pequeño envoltorio alrededor de la llamada para manejar el tiempo de espera usted mismo:

var dns = require('dns');

var nsLookup = function(domain, timeout, callback) 
  var callbackCalled = false;
  var doCallback = function(err, domains) 
    if (callbackCalled) return;
    callbackCalled = true;
    callback(err, domains);
  ;

  setTimeout(function() 
    doCallback(new Error("Timeout exceeded"), null);
  , timeout);

  dns.resolveNs(domain, doCallback);
;

nsLookup('stackoverflow.com', 1000, function(err, addresses) 
  console.log("Results for stackoverflow.com, timeout 1000:");
  if (err) 
    console.log("Err: " + err);
    return;
  
  console.log(addresses);
);

nsLookup('stackoverflow.com', 1, function(err, addresses) 
  console.log("Results for stackoverflow.com, timeout 1:");
  if (err) 
    console.log("Err: " + err);
    return;
  
  console.log(addresses);
);

La salida para el script anterior:

Results for stackoverflow.com, timeout 1:
Err: Error: Timeout exceeded
Results for stackoverflow.com, timeout 1000:
[ 'ns1.serverfault.com',
  'ns2.serverfault.com',
  'ns3.serverfault.com' ]

Nodo.js dns.resolve* use la biblioteca c-ares debajo, que admite tiempos de espera y varias otras opciones de forma nativa. Desafortunadamente, Node.js no expone esos parámetros ajustables, pero algunos de ellos se pueden configurar a través de RES_OPTIONS Variable ambiental.

Ejemplo: RES_OPTIONS='ndots:3 retrans:1000 retry:3 rotate' node server.js

  • ndots: igual que ARES_OPT_NDOTS
  • retrans: igual que ARES_OPT_TIMEOUTMS
  • retry: igual que ARES_OPT_TRIES
  • rotate: igual que ARES_OPT_ROTATE

Consulte man ares_init_options(3) para obtener detalles sobre el significado de cada opción, por ejemplo, aquí http://manpages.ubuntu.com/manpages/zesty/man3/ares_init_options.3.html

Si para ti ha sido provechoso este post, te agradeceríamos que lo compartas con el resto programadores de esta manera nos ayudas a extender nuestro contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *