node.js socket.io How to emit to a particular client?

UPDATE for socket.io version 1.0 and above

io.to(socketid).emit('message', 'whatever');

For older version:

You can store each client in an object as a property. Then you can lookup the socket based on the message:

var basket = {};

io.sockets.on('connection', function (socket) {
  socket.on("register", function(data) {
    basket[data.nickname] = socket.id;
  });
  socket.on("privmessage", function(data){
    var to = basket[data.to];
    io.sockets.socket(to).emit(data.msg);
  });
});

Not tested...but it should give you an idea


For socket.io version 1.0 use:

io.to(socketid).emit('message', 'whatever');

Emitting to a particular client using a socketID.

Server/ package: socket.io:

io.to(socketID).emit('testEvent', 'yourMessage');

Client/ package socket.io-client:

io.sockets.on('connection',(socket) => {
  socket.on("testEvent", data => {
    console.log(data);
  });
});

You can get access the socketID in the following manner:

io.on('connection', (socket, next) => {
    const ID = socket.id // id property on the socket Object
})

It is simply a property on the socket object