【发布时间】:2012-06-04 07:37:47
【问题描述】:
socket.io中是否可以查看用户是否订阅了某个频道?
假设我有一个名为news 的频道。用户在客户端订阅了该频道。但是该站点的数据是动态的,因此该站点的新闻选项卡可能随时都不会打开。如果新闻选项卡未在客户端打开,我不想为新闻选项卡创建内容。我知道当用户没有订阅news频道时,新闻标签没有打开。
有没有办法检查?
【问题讨论】:
标签: javascript node.js socket.io
socket.io中是否可以查看用户是否订阅了某个频道?
假设我有一个名为news 的频道。用户在客户端订阅了该频道。但是该站点的数据是动态的,因此该站点的新闻选项卡可能随时都不会打开。如果新闻选项卡未在客户端打开,我不想为新闻选项卡创建内容。我知道当用户没有订阅news频道时,新闻标签没有打开。
有没有办法检查?
【问题讨论】:
标签: javascript node.js socket.io
您可以使用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);
});
【讨论】: