【发布时间】:2011-04-13 19:15:32
【问题描述】:
假设我想创建一个基于 Web 和 Web 套接字的聊天服务。假设我想要多个独立的聊天室。
我需要它来扩展,所以,我正在考虑使用 XMPP,这样我就可以透明地使用多个服务器。图表中显示的架构是我需要的吗?
而且,我什至需要 NodeJS 吗?
【问题讨论】:
假设我想创建一个基于 Web 和 Web 套接字的聊天服务。假设我想要多个独立的聊天室。
我需要它来扩展,所以,我正在考虑使用 XMPP,这样我就可以透明地使用多个服务器。图表中显示的架构是我需要的吗?
而且,我什至需要 NodeJS 吗?
【问题讨论】:
node.js 负载平衡器和它背后的多个 node.js 服务器怎么样。
使用 redis 之类的东西来存储数据并处理消息传递。看到这个article
然后每个客户端都驻留在 node.js 服务器上,你不在乎哪个。
每条消息都由 node.js 服务器处理(你不在乎)。
每条消息都由处理传入消息的 node.js 服务器发送到 redis。
然后每个 node.js 服务器将其拾取并将其推送到连接到该服务器和该聊天室的所有客户端。
您需要一些黑魔法才能将消息从负载平衡器上的单个 socket.io 连接传送到多个 node.js 服务器的 tcp 套接字。
【讨论】:
room: Array 键/值。如果您的意思是使用多个 socket.io 连接的多个聊天室,那么我们需要更少的管道黑魔法,并且可以让每个服务器处理自己的 websocket 连接。