Node.js如何将socket.io套接字传递给派生进程?

6

我想知道是否有办法在node.js中将socket.io socket传递给一个分叉进程,或者在分叉进程中重建一个socket.io socket?

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

1
关于“cluster”模块怎么样?如果你想进行集群。这里有一个关于“socket.io”和“express”集群示例的链接:https://gist.github.com/nulltask/1877289 - Sung-Pil Lim
你可以使用集群模块进行分叉操作。 - user568109
1个回答

0

解决方案:使用Redis

我相信你会很高兴知道有socket.io-redis的存在

使用它,您将能够在代码的多个实例(进程或服务器)之间发送/接收事件(共享客户端)。 阅读更多:socket.io-redis(Github Repo.)

通过这个,您可以进行扩展:

  1. 垂直地(增加每台机器上的线程数)
  2. 水平地(在更多的机器上部署更多的“主”)

GitHub上有一个示例应用程序

这是一个非常简单的Node.JS客户端/服务器应用程序,展示了如何将Express.js、Socket.IO 1.x和socket.io-redis一起设置。
这对于理解如何扩展需要多个服务器进程的Socket.IO实时应用程序非常有用。Redis被用作存储点(适配器),以便在不同进程或服务器中运行多个socket.io实例,它们都可以相互广播和发出事件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接