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

203
Visualizações
Módulo `net` del nodo Servidor IPC intermitente

Siguiendo la documentación oficial del nodo de los módulos net y child_process , archive esto: un servidor que genera un niño y se conecta a través del módulo net . Pero la conexión es intermitente. El código se explica por sí mismo, pero agregué detalles en los comentarios del código:

 // server.js const childProcess = require('child_process').fork('child.js'); const server = require('net').createServer((socket) => { console.log('got socket connection'); // this callback is intermitent socket.on('data', (stream) => { console.log(stream.toString()); }) }); server.on('connection', () => { console.log('someone connected to server'); // this is running only if the code above runs (but its intermitent) }); server.on('listening', () => { console.log('server is listening'); // this is the first log to execute childProcess.send('server', server); // send the server connection to forked child }); server.listen(null, function () { console.log('server listen callback'); // this is the second log to execute });
 // child.js console.log('forked'); // this is the third log to execute const net = require('net'); process.on('message', (m, server) => { if (m === 'server') { const socket = net.connect(server.address()); socket.on('ready', () => { console.log('child is ready'); // this is the fourth log to execute socket.write('child first message'); // this is always running }) } });

el registro esperado cuando se ejecuta node server es:

 server is listening server listen callback forked child is ready got socket connection someone connected to server child first message

pero como la devolución de llamada del socket (en createServer ) es intermitente, obtenemos esto el 50% de las veces:

 server is listening server listen callback forked child is ready

No sé qué hacer más, ya intenté todo lo que pude... ¿Qué estoy haciendo mal?

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

0

Acabo de encontrar cuál era el problema... cuando leí la documentación, entendí mal que, literalmente, el servidor net se envía al proceso secundario para compartir las "conexiones" para dividir el procesamiento en más de un proceso, y lo que estaba tratando de El archivo era solo una comunicación bidireccional con el niño bifurcado. Dejaré esta respuesta aquí si alguien llega al mismo problema que yo. Este es el código final:

 // server.js const childProcess = require('child_process').fork('child.js'); const server = require('net').createServer((socket) => { console.log('got socket connection'); socket.on('data', (stream) => { console.log(stream.toString()); }) }); server.on('connection', () => { console.log('someone connected to server'); }); server.listen(null, function () { childProcess.send(server.address()); });
 // child.js console.log('forked'); const net = require('net'); process.on('message', (message) => { if (message.port) { const socket = net.connect(message); socket.on('ready', () => { console.log('child is ready'); socket.write('child first message'); }) } });
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