module.exports = io => { io.on('connection', async socket => { console.log(`A socket connection to the server has been made: ${socket.id}`) socket.join('#chat') io.emit( 'received rooms', Object.keys(io.sockets.adapter.rooms) .filter(r => r[0] === '#') .map(k => ({ roomName: k, sockets: Object.keys(io.sockets.adapter.rooms[k]['sockets']), })) ) socket.broadcast.emit('user connected', { socketId: socket.id }) socket.on('message', message => { io.to(message.room).emit(message) }) socket.on('join', payload => { console.log(payload.room) socket.join({ room: payload.room }) }) socket.on('disconnect', async () => { io.emit('user disconnected', { socketId: socket.id }) console.log(`${socket.id} has disconnected.`) io.emit( 'received rooms', Object.keys(io.sockets.adapter.rooms) .filter(r => r[0] === '#') .map(k => ({ roomName: k, sockets: Object.keys(io.sockets.adapter.rooms[k]['sockets']), })) ) }) console.log(io.sockets.adapter.rooms['#chat']) }) }