2012-06-04 66 views
2

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

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

有没有办法检查?

回答

2

您可以使用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); 
}); 
+0

非常感谢!当我来测试你的解决方案时,我会回来接受你的答案。 – Amberlamps

+1

但是现在在这个socket 1.2.0时代呢? –

相关问题