2013-04-17 3 views
5

Мне интересно, есть ли способ передать сокет socket.io в разветвленный процесс в node.js или восстановить сокет socket.io в раздвоенном процессе ?node.js передать socket.io сокет на разветвленный процесс

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

как насчет модуля «кластера»? Если вы хотите группировать. [Эта ссылка 'socket.io' + 'выражение для кластеризации] (https://gist.github.com/nulltask/1877289) –

+0

вы можете сделать fork с помощью модуля кластера – user568109

ответ

0

Решение: Используйте Redis

Я уверен, что вы будете рады узнать о существовании в Socket.io-Redis

С его помощью вы сможете отправлять/получать события (обмениваться клиентами) между несколькими экземплярами вашего кода (процессы или серверы). Read more : socket.io-redis (Github Repo.)

С этим можно масштабировать:

  1. вертикально (увеличить число нитей на машине)
  2. горизонтально (развернуть больше "мастеров" accross более машин)

There is an example app at github

Это очень простое клиентское/серверное приложение Node.JS, которое показывает , как настроить Express.js, Socket.IO 1.x и socket.io-redis вместе.

Это очень полезно в качестве отправной точки, чтобы понять, как масштабировать Приложения Socket.IO RealTime, требующие нескольких серверных процессов. Redis используется как точка хранения (адаптер), чтобы запускать несколько экземпляров socket.io в разных процессах или серверах, которые могут все передавать и передавать события друг другу и из них.

Смежные вопросы