You could be using rooms so you would do the following to emit to everybody in a room
io.sockets.in('a').emit('inA', 'foo')
Then to emit to everybody you can use
io.sockets.emit('everyone','bar');
You can also use namespaces as well:
io.of('/b').emit('inB', 'buzz');
To emit to everyone except the user that triggered you would use:
io.sockets.broadcast.emit("hello");
[edit] Here is a more detailed answer:
The idea behind name-spacing is that it is handled separately from the other namespaces (even global). Think of it as if it was an entirely new socket.io instance, you can run new handshakes, fresh events, authorizations, etc without the different namespaces interfering with each other.
This would be useful for say /chat
and /tracking
where the connection event would have very different logic
Socket.io does all the work for you as if it is two separate instances, but still limits the information to one connection, which is pretty smart.
There might be a workaround in which you can broadcast to all the namespaces (example below). However in short you shouldn't be doing this, you should be using rooms.
for (var nameSpace in io.sockets.manager.namespaces){
io.of(nameSpace).emit("messageToAll", message);
}
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…