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

202
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
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