Broadcasting events
Socket.IO makes it easy to send events to all the connected clients.
Please note that broadcasting is a server-only feature.
To all connected clients
Broadcasting to all connected clientsBroadcasting to all connected clientsio.emit("hello","world");
Clients that are currently disconnected (or in the process of reconnecting) won't receive the event. Storing this event somewhere (in a database, for example) is up to you, depending on your use case.
To all connected clients except the sender
Broadcasting to all connected clients excepting the senderBroadcasting to all connected clients excepting the senderio.on("connection",(socket)=>{
socket.broadcast.emit("hello","world");
});
In the example above, using socket.emit("hello", "world") (without broadcast flag) would send the event to "client A". You can find the list of all the ways to send an event in the cheatsheet.
With multiple Socket.IO servers
Broadcasting also works with multiple Socket.IO servers.
You just need to replace the default Adapter by the Redis Adapter. More information about it here.
Broadcasting with RedisBroadcasting with RedisIn certain cases, you may want to only broadcast to clients that are connected to the current server. You can achieve this with the local flag:
io.local.emit("hello","world");
In order to target specific clients when broadcasting, please see the documentation about Rooms.