Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

132
Vistas
socket.remoteAddress is undefined when there is a timeout or an error

I made this promise function which makes a connection to a specific host however I need to have the remoteAddress to be present in the logs when there is a timeout or an error. It seems like this gets deleted from the object. This is my code:

const makeTCPConnection = async (host, portNumber) =>
  new Promise((resolve, reject) => {
    const client = new Socket();
    let remoteAddress;
    let localAddress;
    const timeout = 2;

    client.setTimeout(timeout);

    client.connect(portNumber, host, () => {
      console.log("TCP connection established", {
        host,
        portNumber,
        localAddress,
        remoteAddress
      });
    });

    client.on("connect", () => {
      localAddress = client.localAddress;
      remoteAddress = client.remoteAddress;
      // client.destroy();
      resolve();
    });

    client.on("close", () => {
      client.destroy();
      resolve();
    });

    client.on("drain", () => {
      client.destroy();
      resolve();
    });

    client.on("end", () => {
      client.destroy();
      resolve();
    });

    client.on("timeout", (error) => {
      console.error("TCP client timeout after 1s", {
        error,
        host,
        portNumber,
        localAddress,
        remoteAddress
      });
      // client.destroy();
      reject(error);
    });

    client.on("error", (error) => {
      console.error("TCP client connection error", {
        error,
        host,
        portNumber,
        localAddress,
        remoteAddress
      });
      client.destroy();
      reject(error);
    });
  });

I been testing this with timeout mainly, I tried to remove the client.destroy() on timeout event but then I get like 4 logs before I get the one with remoteAddress on it. The same thing is happening with localAddress.

Anyone have any ideas?

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda