检索io.socket中的所有套接字对象

我期待从io.sockets获得所有的个人套接字对象,并遍历每个套接字对象。

就像是:

 for (socket in io.sockets.something()) { // do something with each socket } 

要么我做错了,要么就是错过了一些东西。 思考?

官方的方法是:

 io.sockets.clients().forEach(function (socket) { .. }); 

或按房间过滤:

 io.sockets.clients('roomname') .. same as above .. 

这build议在上面的build议,因为socket.io的内部数据结构可以随时更改,并有可能打破你所有的代码与未来的更新。 当你使用这种official方法时,你的风险要小得多。

这可能会或可能不会被“logging”,但是起作用:

 for (var id in io.sockets.sockets) { var s = io.sockets.sockets[id]; if (!s.disconnected) { // ... // for example, s.emit('event', { ... }); } } 

使用io.sockets.clients()

 io.sockets.clients().forEach(function(s) { // ... // for example, s.emit('event', { ... }); }); 

您可以使用优秀的节点检查器附加到您的应用程序,并检查s的内容。