【发布时间】:2015-03-11 15:25:16
【问题描述】:
我有一个 socket.io 的用例,在一个单独的命名空间中,客户端可以连接到多个房间。用户需要在每个房间的基础上进行身份验证(因为可能不允许他们访问这些数据流)。
显然,我可以使用中间件函数和一些身份验证数据检查连接到命名空间的授权,但除非这些房间在连接启动时已经在socket.rooms 中,否则我不知道如何检查,当一个套接字加入一个房间,不管它是否被授权,然后如果它没有被授权就强制它离开房间。
是否有join 事件或等效的方法?就像一个命名空间的 connection 事件,但对于一个房间。
编辑
阅读socket.io 的源代码后,似乎当套接字加入房间时不会触发任何事件,但我可能误解了一些东西:在阅读socket.io-client 的源代码时,加入房间不是固有的系统,提示这只是可以在服务器端触发的东西。在那种情况下,我假设我必须自己管理客户加入房间?如果这是真的,那么我可以有类似的东西:
socket.on('join', function(data) { ... });
这样当一个套接字想要监听一个特定的数据流时,它只是emitsa“加入”事件,带有一些关于它想加入哪个房间的数据,而我在服务器上处理整个事情?
【问题讨论】:
标签: node.js websocket socket.io authorization