6

我想知道是否有任何方法可以将 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
})
4

1 回答 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 实例,这些实例都可以相互广播和发送事件。

于 2017-08-03T19:18:03.437 回答