What's the difference between io.sockets.emit and broadcast?
Solution 1:
io.sockets.emit
will send to all the clients
socket.broadcast.emit
will send the message to all the other clients except the newly created connection
This Socket.IO Wiki post will help everyone reading this question:
The recent cheatsheet can also be viewed here:
https://socket.io/docs/v4/emit-cheatsheet
Solution 2:
socket.broadcast.emit()
behaves similar to io.sockets.emit
, but instead
of emitting to all connected sockets it will emit to all connected
socket except the one it is being called on. So in this case the socket
referenced by socket
will not receive the event.
Solution 3:
Scenario:1:- By the use of io.sockets.emit Detailed Diagram:-io.sockets.emit
Here Every Socket gets the Message including Initiator.
// BY IO>SOCKETS>EMIT
io.sockets.emit('MyChannelBroadcast',
{
owner:"Anshu Ashish",
clientCount:clients,
message:"Welcome All"
}
);
Scenario:2:- By the use of socket.broadcast.emit Detailed Diagram:-socket.broadcast.emit
Here Every Sockets are getting Message Except One i.e Initiator.
// BY SOCKET>BROADCAST>EMIT
socket.broadcast.emit('BroadCastExceptMe',{data:"HAVE A NICE DAY"});
Conclusion:- Now it will totally depends our business requirement that which one will be preferable.
Solution 4:
To make it quite simple, consider the following example: there are 2 clients client A, client B and a server we are using in response to certain event emitted by the client.
socket.brodcast.emit()
client A sends the event In this case, the server will not send the event back to client A but it will send the events to all others connected sockets. So in this case only the client B will get the event response
io.emit()
client A sends the event, the server will send the reply event to all the connected sockets both client A and client B