Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

79
Visualizações
Cómo pasar datos de net.Socket.on a una variable externa o devolverlos

Estoy trabajando con net en node.js y estoy enviando un paquete a un servidor y escuchando la respuesta, pero no puedo devolverlo. Aquí está mi código:

 function packetsend (sockeT, packeT) { var resp = null; if(sockeT) { sockeT.write(packeT); sockeT.on('data', (data) => { resp = data.toString() }) } return resp; } const socket = new net.Socket(); socket.connect({host: server, port: port}, function() { console.log('Connected'); var packetRecv = packetsend(socket, 'some packet'); if (packetRecv === 'some') { console.log("ok"); } })

No entiendo por qué la función de envío de paquetes () no devuelve la variable resp actualizada y, en su lugar, envía un objeto indefinido. Cuando hago console.log(data) dentro de sockeT.on(), veo que recibe datos.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Intente transformar su función de envío de paquetes () en una función asíncrona. Tal vez no devuelva el resp porque lo devuelve antes de que se invoque el evento 'datos'.

Este es solo un ejemplo de una posible implementación:

 function packetsend (sockeT, packeT) { return new Promise((resolve, reject) => { if (sockeT) { sockeT.write(packeT); sockeT.on('data', (data) => { resolve(data.toString()); }); //WARNING: I don't know this 'socketT' object, don't know if there is an 'error' event. //but it's recommended to handle errors. This is just an example. sockeT.on('error', (error) => { reject(error); }); } else{ reject('Missing sockeT'); } }); } const socket = new net.Socket(); socket.connect({ host: server, port: port }, function () { console.log('Connected'); packetsend(socket, 'some packet').then(packetRecv => { console.log('Received data => '+ packetRecv); if (packetRecv === 'some') { console.log("ok"); } }).catch(error => console.log(error)); })

Actualización: también puede usar async/await

 const socket = new net.Socket(); socket.connect({ host: server, port: port }, async function () { try { console.log('Connected'); let packetRecv = await packetsend(socket, 'some packet'); console.log('Received data => '+ packetRecv); if (packetRecv === 'some') { console.log("ok"); } } catch (error) { console.log(error); } });

Puntas:

  • documentación de "promesa"
  • documentación de "eventEmitter"
  • documentación "async/await"
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda