2013-04-17 18 views
5

Zastanawiam się, czy istnieje jakikolwiek sposób przekazania gniazda socket.io do rozwidlonego procesu w node.js, lub zrekonstruowania gniazda socket.io w rozwidlonym procesie ?node.js przekazuje gniazdo socket.io do rozwidlonego procesu

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

Co powiecie na moduł "klastra"? Jeśli chcesz grupować. [Ten link "socket.io" + próbka "klastrowanie" próbki] (https://gist.github.com/nulltask/1877289) –

+0

można zrobić widelec za pomocą modułu klastra – user568109

Odpowiedz

0

Rozwiązanie: Użyj Redis

Im na pewno będziesz zadowolony wiedzieć o istnieniu w socket.io-REDiS

Dzięki niemu będzie można wysyłać/odbierać zdarzenia (share clients) pomiędzy wieloma instancjami twojego kodu (procesy lub serwery). Read more : socket.io-redis (Github Repo.)

Z tego można skalować:

  1. pionowo (zwiększenie liczby wątków na maszynie)
  2. poziomo (rozmieścić więcej "mistrzów" accross kilku maszyn)

There is an example app at github

To jest bardzo prosta aplikacja klient/serwer Node.JS, która pokazuje jak skonfigurować Express.js, Socket.IO 1.x i socket.io-redis razem.

Jest to bardzo przydatne jako punkt wyjścia do zrozumienia, jak skalować Socket.IO RealTime Aplikacje, które wymagają wielu procesów serwera. Redis jest używany jako punkt przechowywania (adapter) w celu uruchamiania wielu wystąpień instancji socket.io w różnych procesach lub serwerach, które mogą nadawać i emitować zdarzenia do i od siebie nawzajem.