diff --git a/server/socket/index.js b/server/socket/index.js index b2d8285..c55b79b 100644 --- a/server/socket/index.js +++ b/server/socket/index.js @@ -1,24 +1,52 @@ 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.join('#chat', () => { + socket.emit('get my rooms', socket.rooms) + }) socket.on('message', message => { io.to(message.room).emit(message) }) + + socket.on('get all users', () => { + console.log('get all users') + console.log(Object.keys(io.sockets.sockets)) + }) + + socket.on('get all rooms', () => { + console.log('get all rooms') + console.log( + Object.keys(io.sockets.adapter.rooms) + .filter(r => r[0] === '#') + .map(k => ({ + roomName: k, + sockets: Object.keys(io.sockets.adapter.rooms[k]['sockets']), + })) + ) + }) + + socket.on('get my rooms', () => { + console.log('get my rooms') + console.log(Object.keys(socket.rooms)) + }) + + socket.on('join a room', roomName => { + console.log('join a room') + socket.join(roomName, () => { + socket.emit('get my rooms') + }) + }) + + socket.on('leave a room', () => { + console.log('leave a room') + }) + socket.on('join', payload => { console.log(payload.room) - socket.join({ room: payload.room }) + socket.join({ room: payload.room }, () => { + socket.emit('got user rooms', Object.keys(socket.rooms)) + }) }) socket.on('disconnect', async () => { io.emit('user disconnected', { socketId: socket.id }) @@ -33,7 +61,5 @@ module.exports = io => { })) ) }) - - console.log(io.sockets.adapter.rooms['#chat']) }) } diff --git a/src/App.js b/src/App.js index 7e25c98..6a9230c 100644 --- a/src/App.js +++ b/src/App.js @@ -1,7 +1,7 @@ import React from 'react' import socket from './socket' -import { Navbar, Nav, Dropdown } from 'react-bootstrap' +import { Navbar, Nav, Dropdown, DropdownButton, Button } from 'react-bootstrap' import uuid from 'uuid' import moment from 'moment' @@ -9,7 +9,8 @@ const initialState = { loading: true, messages: [], message: '', - rooms: [], + allRooms: [], + myRooms: [], room: '/', users: [], user: {}, @@ -48,6 +49,11 @@ class App extends React.Component { console.log(rooms) this.setState({ rooms }) }) + + this.socket.on('get user rooms', roomArray => { + const myRooms = roomArray.filter(roomString => roomString[0] === '#') + this.setState({ myRooms }) + }) } handleChange(e) { @@ -106,7 +112,7 @@ class App extends React.Component { - {this.state.rooms.map(r => ( + {this.state.allRooms.map(r => ( {r.roomName} @@ -114,6 +120,30 @@ class App extends React.Component { + + + @@ -125,7 +155,7 @@ class App extends React.Component { >
User Channels

this currently shows all channels

- {this.state.rooms.map(r => ( + {this.state.myRooms.map(r => (