检查用户是否订阅了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); });