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

I want to "emit" a message to a particular client which is selected based on another message received in a different client, How do I do this?

I am thinking of joining each client to their own "room" and then broadcast. Is there a better way?

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 io.to(socketid).emit('message', 'whatever');