是否可以检查用户是否订阅了 socket.io 中的某个频道?
假设我有一个名为 的频道news
。用户在客户端订阅了该频道。但是该站点的数据是动态的,因此该站点的新闻选项卡可能随时都不会打开。如果新闻选项卡未在客户端打开,我不想为新闻选项卡创建内容。我知道当用户没有订阅news
频道时,新闻标签没有打开。
有没有办法检查?
是否可以检查用户是否订阅了 socket.io 中的某个频道?
假设我有一个名为 的频道news
。用户在客户端订阅了该频道。但是该站点的数据是动态的,因此该站点的新闻选项卡可能随时都不会打开。如果新闻选项卡未在客户端打开,我不想为新闻选项卡创建内容。我知道当用户没有订阅news
频道时,新闻标签没有打开。
有没有办法检查?
您可以使用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);
});