【发布时间】:2015-04-16 09:21:28
【问题描述】:
我想在 3 台不同的机器上设置 socket.io 服务器。我有一个负载平衡器设置,用于在不同的服务器之间分配请求,但是如何将我在 socket.io 的连接函数中获得的套接字对象分配到不同的服务器?我知道我们可以使用 RedisStore pub/sub 来发布和写入 redis 事件,但假设我有一个连接到机器 1 的客户端 A,如果我有一个连接到机器 3 的客户端 B。客户端 A 将如何发送给客户 B 的消息?或者我可以使用 socket.io 中的其他架构来实现这一点?
【问题讨论】:
-
您不能将套接字对象分发到不同的服务器。套接字对象属于特定的网卡,并且只能与该网卡一起使用。您可以让您的服务器相互通信,以便与连接到另一台服务器的客户端通信。通常使用单个共享 redis 存储来跟踪给定客户端连接到哪个服务器。
-
谢谢您,您知道是否有任何其他技术堆栈可以让我们这样做?
-
你可以在这里阅读:socket.io/docs/using-multiple-nodes
-
是的,但这会在同一个盒子上设置不同的 socket.io 线程,对吧?
-
那篇文章的开头说:“如果您打算在不同的进程或机器之间分配连接负载”。后来它指的是:“在进程或计算机之间传递消息”。