How to send a message to a particular client with socket.io

You can use socket.io rooms. From the client side emit an event (“join” in this case, can be anything) with any unique identifier (email, id).

Client Side:

var socket = io.connect('http://localhost');
socket.emit('join', {email: user1@example.com});

Now, from the server side use that information to create an unique room for that user

Server Side:

var io = require('socket.io').listen(80);

io.sockets.on('connection', function (socket) {
  socket.on('join', function (data) {
    socket.join(data.email); // We are using room of socket io
  });
});

So, now every user has joined a room named after user’s email. So if you want to send a specific user a message you just have to

Server Side:

io.sockets.in('user1@example.com').emit('new_msg', {msg: 'hello'});

The last thing left to do on the client side is listen to the “new_msg” event.

Client Side:

socket.on("new_msg", function(data) {
    alert(data.msg);
}

I hope you get the idea.

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)