I want to get back the list of rooms so i can put a drop down to my client side code . So when a new user visits he gets the list of all the active rooms in drop down.
So how do I get the list of active rooms in socket.io ?
This is my code .
const { addUser, removeUser, getUser, getUsersRoom } = require('./users.js');
const PORT = process.env.PORT || 5000
const app = express()
const server = http.createServer(app)
const io = socketio(server)
io.on('connection', (socket) => {
console.log('we have a new connection !!!');
//*USER JOIN
socket.on('join', ({ name, room }, callback) => {
const { error, user } = addUser({ id: socket.id, name, room })
if (error) {
return callback(error)
}
socket.emit('message', { user: 'admin', text: `${user.name}, Welcome to the room ${user.room}` })
socket.broadcast.to(user.room).emit('message', { user: 'admin', text: `${user.name}, has joined.` })
socket.join(user.room);
io.to(user.room).emit('roomData', { room: user.room, users: getUsersRoom(user.room) })
callback()
})
socket.on('sendMessage', (message, callback) => {
const user = getUser(socket.id)
io.to(user.room).emit('message', { user: user.name, text: message })
callback()
})
socket.on('disconnect', () => {
const user = removeUser(socket.id)
console.log('a user left !!!');
if (user) {
io.to(user.room).emit('message', { user: 'admin', text: `${user.name} has left.` })
io.to(user.room).emit('roomData', { room: user.room, users: getUsersRoom(user.room) })
}
})
})
app.use(router)
server.listen(PORT, () => {
console.log(`Server is up in running on port ${PORT}`);
})