diff --git a/server/socket/index.js b/server/socket/index.js index 3fe1c1e..ff42423 100644 --- a/server/socket/index.js +++ b/server/socket/index.js @@ -1,33 +1,25 @@ module.exports = io => { io.on('connection', async socket => { console.log(`A socket connection to the server has been made: ${socket.id}`) - socket.join('#chat', () => { - sendAllRooms() - sendAllUsers() - send_rooms() - send_user_rooms() + socket.join('#projex', () => { + sendUsers() + sendNamespaces() }) socket.on('message', message => { - console.log(`send a message to room ${message.room}: ${message}`) - io.of(message.room).emit('message', message) + console.log('sending message to namespace', message.namespace, message) + io.to(message.namespace).emit('message', message) }) - socket.on('get all users', () => { - console.log('get all users') - sendAllUsers() + socket.on('get users', () => { + console.log('get users') + sendUsers() }) - socket.on('get my rooms', () => { - console.log('get my rooms') - sendAllRooms() - }) - - socket.on('join', roomName => { - console.log('join:', roomName) - socket.join(roomName, () => { - sendAllRooms() - send_user_rooms() + socket.on('join', namespace => { + console.log('join:', namespace) + socket.join(namespace, () => { + sendNamespaces() }) }) @@ -35,57 +27,24 @@ module.exports = io => { console.log('part') }) - socket.on('get all rooms', () => sendAllRooms()) - socket.on('join', payload => { - console.log(payload.room) - socket.join(payload.room, () => { - socket.emit('got user rooms', Object.keys(socket.rooms)) - send_rooms() - send_user_rooms() - }) - }) + socket.on('get namespaces', () => sendNamespaces()) - const sendAllRooms = () => { - console.log('get all rooms') - const allRooms = Object.keys(io.sockets.adapter.rooms) - .filter(r => r[0] === '#') - .map(k => ({ - roomName: k, - sockets: Object.keys(io.sockets.adapter.rooms[k]['sockets']), - })) - io.emit('got all rooms', allRooms) + const sendNamespaces = () => { + const namespaces = Object.keys(io.sockets.adapter.rooms).map(k => ({ + namespace: k, + sockets: Object.keys(io.sockets.adapter.rooms[k]['sockets']), + })) + io.emit('got namespaces', namespaces) } - const sendAllUsers = () => - socket.emit('got all users', Object.keys(io.sockets.sockets)) + const sendUsers = () => + socket.emit('got users', Object.keys(io.sockets.sockets)) socket.on('disconnect', async () => { io.emit('user disconnected', { socketId: socket.id }) console.log(`${socket.id} has disconnected.`) - send_rooms() + sendNamespaces() + sendUsers() }) - 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() { - console.log(socket.rooms) - socket.emit( - 'received my rooms', - Object.keys(io.sockets.adapter.rooms).map(k => ({ - roomName: k, - sockets: io.sockets.adapter.rooms[k]['sockets'], - })) - ) - } }) } diff --git a/src/App.js b/src/App.js index a632e70..dccae52 100644 --- a/src/App.js +++ b/src/App.js @@ -9,8 +9,8 @@ const initialState = { loading: true, messages: [], message: '', - allRooms: [], - room: '/', + namespaces: [], + namespace: '/', allUsers: [], user: {}, } @@ -27,14 +27,12 @@ class App extends React.Component { async fetchData() { this.setState({ loading: false }) - this.socket.emit('get my rooms') } componentDidMount() { this.fetchData() this.socket.on('connect', () => { console.log('connected!') - this.socket.emit('get all rooms') const user = { socketId: this.socket.id } this.setState({ user }) }) @@ -47,13 +45,13 @@ class App extends React.Component { console.log('a user disconnected.', payload) }) - this.socket.on('got all rooms', allRooms => { - console.log('got all rooms:', allRooms) - this.setState({ allRooms }) + this.socket.on('got namespaces', namespaces => { + console.log('got namespaces:', namespaces) + this.setState({ namespaces }) }) - this.socket.on('got all users', allUsers => { - console.log('got all users:', allUsers) + this.socket.on('got users', allUsers => { + console.log('got users:', allUsers) this.setState({ allUsers }) }) @@ -61,17 +59,6 @@ class App extends React.Component { const messages = this.state.messages.concat(msg) 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) { @@ -82,7 +69,7 @@ class App extends React.Component { const args = this.state.message.split(' ') const cmd = args[0].slice(1) console.log('command:', cmd) - if (cmd === 'join') this.socket.emit('join', args[1]) + if (cmd === 'join') this.join(args[1]) this.setState({ message: '' }) } handleSubmit(e) { @@ -95,19 +82,9 @@ class App extends React.Component { date: moment().format('MMMM D YYYY, h:mm a'), socketId: this.socket.id, text: this.state.message, - 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) - } + namespace: this.state.namespace, } + this.sendMessage(message) this.setState({ message: '' }) } @@ -118,13 +95,22 @@ class App extends React.Component { renderError() { return