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 currently shows all channels
- {this.state.rooms.map(r => ( + {this.state.myRooms.map(r => (