40 lines
1.2 KiB
JavaScript
40 lines
1.2 KiB
JavaScript
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'])
|
|
})
|
|
}
|