io.emit vs socket.emit io.emit vs socket.emit node.js node.js

io.emit vs socket.emit


Here's a supplementary documentation for reference.

socket.emit('message', "this is a test"); //sending to sender-client onlysocket.broadcast.emit('message', "this is a test"); //sending to all clients except sendersocket.broadcast.to('game').emit('message', 'nice game'); //sending to all clients in 'game' room(channel) except sendersocket.to('game').emit('message', 'enjoy the game'); //sending to sender client, only if they are in 'game' room(channel)socket.broadcast.to(socketid).emit('message', 'for your eyes only'); //sending to individual socketidio.emit('message', "this is a test"); //sending to all clients, include senderio.in('game').emit('message', 'cool game'); //sending to all clients in 'game' room(channel), include senderio.of('myNamespace').emit('message', 'gg'); //sending to all clients in namespace 'myNamespace', include sendersocket.emit(); //send to all connected clientssocket.broadcast.emit(); //send to all connected clients except the one that sent the messagesocket.on(); //event listener, can be called on client to execute on serverio.sockets.socket(); //for emiting to specific clientsio.sockets.emit(); //send to all connected clients (same as socket.emit)io.sockets.on() ; //initial connection from a client.

Hope this helps!.


The io variable represents the group of sockets. The code you have starts on line one with providing a function in the second parameter that gives you a socket variable every time a new connection is made. The socket variable is only for communicating with each individual connection. You may not see it in the code but there will be one socket variable for each connection established


  • socket.emit will send back message to sender only,
  • io.emit willsend message to all the client including sender
  • if you want to sendmessage to all but not back to sender then socket.broadcast.emit