forked from notnull/ircz
join, send_users (#1)
This commit is contained in:
parent
4c63be54ea
commit
e325a13156
@ -4,6 +4,8 @@ module.exports = io => {
|
|||||||
socket.join('#chat', () => {
|
socket.join('#chat', () => {
|
||||||
sendAllRooms()
|
sendAllRooms()
|
||||||
sendAllUsers()
|
sendAllUsers()
|
||||||
|
socket.emit('get my rooms', socket.rooms)
|
||||||
|
send_rooms()
|
||||||
})
|
})
|
||||||
|
|
||||||
socket.on('message', message => {
|
socket.on('message', message => {
|
||||||
@ -33,11 +35,12 @@ module.exports = io => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
socket.on('get all rooms', () => sendAllRooms())
|
socket.on('get all rooms', () => sendAllRooms())
|
||||||
socket.on('send all clients', () => {
|
socket.on('join', payload => {
|
||||||
// https://socket.io/docs/server-api/#namespace-clients-callback
|
console.log(payload.room)
|
||||||
io.clients((error, clients) => {
|
socket.join(payload.room, () => {
|
||||||
if (error) throw error
|
socket.emit('got user rooms', Object.keys(socket.rooms))
|
||||||
console.log(clients)
|
send_rooms()
|
||||||
|
send_user_rooms()
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -58,6 +61,29 @@ module.exports = io => {
|
|||||||
socket.on('disconnect', async () => {
|
socket.on('disconnect', async () => {
|
||||||
io.emit('user disconnected', { socketId: socket.id })
|
io.emit('user disconnected', { socketId: socket.id })
|
||||||
console.log(`${socket.id} has disconnected.`)
|
console.log(`${socket.id} has disconnected.`)
|
||||||
|
send_rooms()
|
||||||
})
|
})
|
||||||
|
io.emit('received users', Object.keys(io.sockets.sockets))
|
||||||
|
|
||||||
|
function send_rooms() {
|
||||||
|
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']),
|
||||||
|
}))
|
||||||
|
)
|
||||||
|
}
|
||||||
|
function send_user_rooms() {
|
||||||
|
socket.emit(
|
||||||
|
'received my rooms',
|
||||||
|
Object.keys(socket.rooms).map(k => ({
|
||||||
|
roomName: k,
|
||||||
|
sockets: socket.rooms[k]['socket'],
|
||||||
|
}))
|
||||||
|
)
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
22
src/App.js
22
src/App.js
@ -60,6 +60,17 @@ class App extends React.Component {
|
|||||||
const messages = this.state.messages.concat(msg)
|
const messages = this.state.messages.concat(msg)
|
||||||
this.setState({ messages })
|
this.setState({ messages })
|
||||||
})
|
})
|
||||||
|
this.socket.on('received my rooms', myRooms => {
|
||||||
|
console.log('my rooms', myRooms)
|
||||||
|
this.setState({ myRooms })
|
||||||
|
})
|
||||||
|
this.socket.on('received users', users => {
|
||||||
|
console.log(users)
|
||||||
|
this.setState({ users })
|
||||||
|
})
|
||||||
|
this.socket.on('join', room => {
|
||||||
|
console.log('joining', room)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
handleChange(e) {
|
handleChange(e) {
|
||||||
@ -85,6 +96,17 @@ class App extends React.Component {
|
|||||||
text: this.state.message,
|
text: this.state.message,
|
||||||
room: this.state.room,
|
room: this.state.room,
|
||||||
}
|
}
|
||||||
|
if (message.text[0] === '/') {
|
||||||
|
// handle commands in separate function
|
||||||
|
const args = this.state.message.split(' ')
|
||||||
|
const cmd = args[0].slice(1, 5)
|
||||||
|
console.log('saw a command:', cmd)
|
||||||
|
if (cmd === 'join') {
|
||||||
|
const room = args[1]
|
||||||
|
console.log('user wants to join', room)
|
||||||
|
this.joinRoom(room)
|
||||||
|
}
|
||||||
|
}
|
||||||
this.sendMessage(message)
|
this.sendMessage(message)
|
||||||
this.setState({ message: '' })
|
this.setState({ message: '' })
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user