I'm trying to implement a small chat application where a user can able to send message to specific Id or set of Id's. I went through the socketio documentation and could find a proper solution. i tried this function
socket.broadcast.to(socketid).emit('message', 'for your eyes only');
but it didnt work.
let onlineUsers = [];
let sockets = {};
module.exports = function (io,app) {
io.on('connection', (socket) => {
// Event for user connecting to socket
socket.on('online', (data) => {
if(data.username!=null){
socket.name = data.username;
onlineUsers.push(data.username);
sockets[data.username] = socket.id;
console.log(data.username+' online');
}
});
socket.on('Chat', (data) => {
socket.broadcast.to(sockets[data.receiver]).emit('message',data.message);
socket.leave(name);
console.log('message sent');
});
// Event for user going ofline
socket.on('offline', () => {
for (var i = 0, len = onlineUsers.length; i < len; i++) {
if (onlineUsers[i] && onlineUsers[i].username === socket.name) {
onlineUsers.splice(i, 1);
delete sockets[socket.name];
socket.broadcast.emit('offline', {
username: socket.name
});
}
}
console.log('offline');
});
}