// Send Message in chat socket.on('send message', function(data) { var encodedMsg = data.replace(/</g, "<").replace(/>/g, ">"); // console.log(data); io.sockets.in("room-" + socket.roomnum).emit('new message', { msg: encodedMsg, user: socket.username }); });
// New User socket.on('new user', function(data, callback) { callback(true); // Data is username var encodedUser = data.replace(/</g, "<").replace(/>/g, ">"); socket.username = encodedUser; //console.log(socket.username) users.push(socket.username); updateUsernames(); });
io.on('connection', client => { console.log('New client connected'); client.on('login', data => eventHandlers.login(client, data)); client.on('register', data => eventHandlers.register(client, data)); client.on('cmd', auth(client, eventHandlers.cmd)); client.on('msg', auth(client, eventHandlers.msg)); client.on('disconnect', () => { console.log(`${(client.username || 'unknown user')} disconnected`); }); });
// when the client emits 'typing', we broadcast it to others socket.on('typing', function(room) { if (!socket.authenticated) { return; } socket.broadcast.emit('typing', { room: room, username: socket.username, avatar: socket.avatar }); });
io.on('connection', socket => { // Add user on the private group and alert the other member socket.on('add user', user => { if (addedUser) return socket.username = user.name addedUser = true socket.group = io.of(`/${user.nsp}`) .socket.group.emit('msg', { username: socket.username, message: 'A user is connected' }) socket.group.on('connection', () => console.log('user is connected')) // send message to a private socket namespace socket.group.on('msg', msg => socket.group.emit('msg', { username: socket.username, msg })) // inform the other user has left the chat socket.group.on('disconnect', () => addedUser ? socket.group.emit('user left', socket.username) : '') }) })
socket.conn.on('heartbeat', function() { if (!socket.authenticated) { // Don't start counting as present until they authenticate. return; } Presence.upsert(socket.id, { username: socket.username }); });
// when the user disconnects.. perform this socket.on('disconnect', function() { if (socket.authenticated) { Presence.remove(socket.id); Presence.list(function(users) { // echo globally (all clients) that a person has left socket.broadcast.emit('user left', { username: socket.username, avatar: socket.avatar, numUsers: users.length }); }); } });
socket.avatar = 'https://www.gravatar.com/avatar/' + crypto.createHash('md5').update(socket.username).digest('hex') + '?d=retro'; username: socket.username }); socket.present = true; username: socket.username, avatar: socket.avatar, numUsers: users.length username: socket.username, avatar: socket.avatar });
text: data.message, }, username: socket.username, avatar: socket.avatar };
username: socket.username, message: data });
io.sockets.on('connection', (socket) => { socket.on('sendchat', (data) => { io.sockets.emit('updatechat', socket.username, data); }); socket.on('adduser', (username) => { socket.username = username; usernames[username] = username; socket.emit( 'servernotification', { connected: true, toSelf: true, username: username }); socket.broadcast.emit('servernotification', { connected: true, username: username }); io.sockets.emit('updateusers', usernames); }); socket.on('disconnect', () => { delete usernames[socket.username]; io.sockets.emit('updateusers', usernames); socket.broadcast.emit('servernotification', { username: socket.username }); }); });
// when the client emits 'stop typing', we broadcast it to others socket.on('stop typing', function(room) { if (!socket.authenticated) { return; } socket.broadcast.emit('stop typing', { room: room, username: socket.username }); });