检查用户是否订阅了socket.io中的某个频道
是否有可能检查用户是否订阅了socket.io中的某个频道?
比方说我有一个叫news
的频道。 用户在客户端订阅了该频道。 但该网站的数据是dynamic的,因此该网站的新闻标签可能不会随时打开。 如果新闻标签没有在客户端打开,我不想为新闻标签创build内容。 我知道新闻标签没有公开,当用户还没有订阅news
频道。
有没有办法来检查?
你可以使用io.sockets.clients('news')
,这将返回所有客户端的套接字ID。 如果你知道客户端socket.id
,你也可以调用io.sockets.manager.roomClients[socket.id]
(房间名称将会有'/'字符)
这是我用于pipe理客户端调用每个房间的客户端计数的示例:
socket.on('countClientsInRoom', function (room, callback) { var count = io.sockets.clients(room).length; callback(count); });