检查用户是否在socket.io中订阅了某个频道

时间:2012-06-04 07:37:47

标签: javascript node.js socket.io

是否可以检查用户是否在socket.io中订阅了某个频道?

假设我有一个名为news的频道。用户在客户端订阅了该频道。但该网站的数据是动态的,因此该网站的新闻标签可能随时无法打开。如果新闻选项卡未在客户端打开,我不想为新闻选项卡创建内容。我知道当用户尚未订阅news频道时,新闻标签未打开。

有没有办法检查?

1 个答案:

答案 0 :(得分:3)

您可以使用io.sockets.clients('news'),这将返回所有客户端的套接字ID。如果您了解客户socket.id,也可以致电io.sockets.manager.roomClients[socket.id](房间名称将包含'/'前导字符)

这是我用于管理客户端调用每个房间获取客户端数量的示例:

socket.on('countClientsInRoom', function (room, callback) {
    var count = io.sockets.clients(room).length;
    callback(count);
});