2011-12-13 18 views
6

Ho letto che è possibile condividere socket tra processi. Questo è anche possibile in Node.js?node.js - condivisione di socket tra processi

Ho visto l'API a cluster in node.js, ma non è quello che sto cercando. Voglio essere in grado di accettare una connessione in un unico processo, magari inviare & leggere un po 'e dopo un po' passare questo socket a un altro processo node.js completamente indipendente.

Potrei già farlo con le tubazioni, ma non voglio farlo, poiché non è veloce come leggere direttamente/scrivere sul socket stesso.

Qualche idea?

Aggiornamento ho trovato la seguente voce nella documentazione node.js:

new net.Socket([options]) # 
Construct a new socket object. 

options is an object with the following defaults: 

{ fd: null 
    type: null 
    allowHalfOpen: false 
} 
fd allows you to specify the existing file descriptor of socket. type specified underlying protocol. It can be 'tcp4', 'tcp6', or 'unix'. About allowHalfOpen, refer to createServer() and 'end' event. 

penso che sarebbe possibile impostare la proprietà "fd" al filedescriptor della presa e quindi aprire il socket con quello. Ma ... Come posso ottenere il filedescriptor del socket e passarlo al processo che ne ha bisogno?

Grazie per qualsiasi aiuto!

+2

Condivisione di un socket tra più processi chiede per la concorrenza e il blocco incubi – Raynos

risposta

1

Al momento non è possibile, ma l'ho aggiunto come richiesta di funzionalità alla pagina dei problemi del nodo.

Aggiornamento Nel frattempo, ho scritto un modulo per questo. Lo si può trovare qui: https://github.com/VanCoding/node-ancillary

+0

funziona anche con socket.io? – InsOp

0

Probabilmente si desidera dare un'occhiata a hook.io

hook.io è un EventEmitter distribuito costruito su node.js. Oltre a fornire un framework di eventi minimalista, hook.io fornisce anche una ricca rete di librerie di hook per la gestione di tutti i tipi di input e output.

+0

hook.io è sicuramente non è la risposta a questa domanda, è molto più di questo - e per molte persone sarà troppo di più – Tom

+0

Tom, ha convenuto che è molto, ma ci dovrebbero essere un sacco di "esempi" che Van potrebbe scavare all'interno dell'implementazione di esso – Tristan

+1

Sembra essere sicuramente un progetto interessante, ma, nel suo nucleo, non è quello che voglio . Penso che anche i loro dati siano collegati e non siano in grado di condividere lo stesso stream/socket. –

Problemi correlati