我有一个 Node.js Web 服务器,它在顶部运行一个套接字服务器,它是使用Socket.io创建的。基本上,这行得通。
我现在想要实现的是连接的客户端集群在组中。因此,可能有一些客户端组成 A 组,而其他一些客户端则组成 B 组。它们应通过寻址特定 URL 来选择属于哪个组,要么localhost:3000/A
要么localhost:3000/B
。
在 Socket.io 中,我现在想向 A 组中的所有客户端或 B 组中的所有客户端或所有客户端发送消息,而不查看他们的组。
这基本上就像与房间聊天,您可以为特定房间内的所有客户或任何客户发送消息,无论他在哪个房间。
使用 Socket.io 设计这样一个系统的最佳方法是什么?
到目前为止,我一直在尝试使用命名空间,它基本上适用于创建组 A 和 B,但随后我失去了向所有客户端发送消息的能力,无论他们在什么房间。至少我不知道该怎么做这个。
我应该如何建模?我应该寻找哪些正确的术语?
更新:根据@sdedelbrock的回答,我可以使用命名空间或房间:
- 如果使用命名空间,我无法长时间发送给每个人,无论他们的命名空间如何。这是因为
io.sockets
是 的快捷方式io.of('')
,当然它不再与命名空间匹配。 - 这意味着我应该使用房间,但我想知道房间和命名空间之间的语义区别是什么。
简而言之:为什么同一个(?)想法有两个概念?