node.js将socket.io socket传递给forked进程

Mr.*_*cer 5 node.js socket.io

我想知道是否有任何方法可以将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
})
Run Code Online (Sandbox Code Playgroud)

EMX*_*EMX 0

解决方案:使用Redis

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

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

有了这个,您可以扩展:

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

github 上有一个示例应用程序

这是一个非常简单的 Node.JS 客户端/服务器应用程序,展示了如何一起设置 Express.js、Socket.IO 1.x 和 socket.io-redis。

作为了解如何扩展需要多个服务器进程的 Socket.IO 实时应用程序的起点,这非常有用。Redis 用作存储点(适配器),以便在不同的进程或服务器中运行多个 socket.io 实例,这些实例都可以相互广播和发出事件。