2013-04-17 12 views
5

Mi chiedo se c'è un modo per passare un socket socket.io a un processo biforcato in node.js, o ricostruire un socket socket.io nel processo biforcato ?node.js passaggio socket.io a processo forked

child = require("child_process").fork("worker.js") 
io.sockets.on("connection", function(socket){ 
    child.send("socket", socket); //this definitely fails now 
}) 
+1

E il modulo "cluster"? Se vuoi raggruppare. [Questo esempio di cluster 'socket.io' + 'express'] (https://gist.github.com/nulltask/1877289) –

+0

è possibile eseguire fork utilizzando il modulo cluster – user568109

risposta

0

Soluzione: utilizzare Redis

Sono sicuro che sarete felici di conoscere l'esistenza di socket.io-Redis

Con esso si sarà in grado di inviare/ricevere eventi (condividi i clienti) tra più istanze del tuo codice (processi o server). Read more : socket.io-redis (Github Repo.)

Con questo si può scalare:

  1. verticalmente (aumentare il numero di fili per macchina)
  2. orizzontalmente (distribuire più "master" accross altre macchine)

There is an example app at github

Questa è un'applicazione client/server Node.JS molto semplice che mostra come configurare Express.js, Socket.IO 1.xe socket.io-redis insieme.

Questo è molto utile come punto di partenza per comprendere come ridimensionare le applicazioniSocket.IO RealTime che richiedono più processi del server. Redis viene utilizzato come punto di memorizzazione (adattatore) per eseguire più istanze di socket.io in diversi processi o server che possono trasmettere tutti gli eventi ed emettere eventi l'uno dall'altro.