我有一个Node.js网络服务器,它运行顶层的套接字服务器,它使用Socket.io创建。基本上,这是有效的。Socket.io:Namespaces,channels&co
我现在想要实现的是,连接的客户端是按群组聚集的。因此,可能有一些客户组成了组A以及组成组B的一些其他客户。他们应该通过对特定的URL(localhost:3000/A
或localhost:3000/B
)进行选择来选择他们属于哪个组。
在Socket.io中,我现在想发送消息给A组中的所有客户端,或B组中的所有客户端或所有客户端,而无需查看他们的组。
它基本上就像带客房的聊天,你必须对所有客户端或者消息的特定的房间内,或任何客户端,不管他在哪个房间。
什么是设计最好的办法这样的系统使用Socket.io?
我一直在尝试使用命名空间到目前为止,基本上可以创建组A和B,但是然后我失去了向所有客户端发送消息的能力,无论他们在哪个房间。至少我没有知道如何做到这一点。
我该如何建模?我应该寻找什么样的正确条款?
UPDATE:据@sdedelbrock答案我可以使用命名空间或房间:
- 如果使用命名空间,我没多久能够发送到每个人,不论其命名空间。这是因为
io.sockets
是io.of('')
的快捷方式,当然这与命名空间不再匹配。 - 这意味着我应该使用房间,但我不知道房间和名称空间之间的语义差异是什么。
简而言之:为什么同一个(?)想法有两个概念?
我试过这个。当使用第二种方法(名称空间)时,无论名称空间如何,我都无法发送给每个人。这是因为'io.sockets'是'io.of('')'的快捷方式,当然这与命名空间不再匹配。所以这意味着我应该使用房间。 无论如何,我不知道房间和命名空间之间的语义差异是什么?为什么同一个(?)想法有两个概念? –
我相信这是它们可以单独管理,但我确实发现了一个很好的写法[Socket.io Namespaces](http://gordonkoo.com/blog/2012/02/28/under-the-hood -of-socket-io-namespaces /) – Sdedelbrock
这篇文章绝对是一个很好的阅读,但不幸的是它不能回答我的问题。我仍然不明白何时应该使用名称空间,何时使用空间,以及它们之间的语义差异。另外:我如何向所有客户端发送消息,而不管他们的名称空间如何? –