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?
var socket = require('socket. io-client')('ws://ws.website.com/socket.io/?EIO=3&transport=websocket'); socket. on('connect', function() { console. log("Successfully connected!"); });
The send() function initiates transmission of a message from the specified socket to its peer. The send() function sends a message only when the socket is connected (including when the peer of the connectionless socket has been set via connect()). The length of the message to be sent is specified by the len argument.
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');
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With