Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | import { Server } from 'socket.io' import dojoDomains from '../../lib/dojoDomains' let rooms = {} export default function SocketHandler(req, res) { if (res.socket.server.io) { res.end() return } const io = new Server(res.socket.server) res.socket.server.io = io io.on('connection', (socket) => { socket.on('join-room', ({ room, user, domain }) => { if (!(room in rooms)) { rooms[room] = { connections: { [socket.id]: { admin: true, user, belt: '' }, }, domain, principle: Object.keys(dojoDomains[domain])[0], chat: [], votes: {}, } socket.join(room) io.to(room).emit('room-data', rooms[room]) } else if (user) { rooms[room].connections[socket.id] = { user, belt: '' } socket.join(room) io.to(room).emit('room-data', rooms[room]) } }) socket.on('select-belt-colour', ({ room, colour }) => { rooms[room].connections[socket.id].belt = colour io.to(room).emit('room-data', rooms[room]) }) socket.on('hide-cards', ({ room, hide }) => { io.to(room).emit('hide-from-server', hide) }) socket.on('clear-cards', ({ room }) => { for (let id in rooms[room].connections) { rooms[room].connections[id].belt = '' } io.to(room).emit('room-data', rooms[room]) }) socket.on('update-timer', ({ room, timer }) => { io.to(room).emit('update-timer-from-server', timer - 1) }) socket.on('leave-room', ({ room }) => { // handle passing admin to next in line if (rooms[room].connections[socket.id]?.admin) { if (Object.keys(rooms[room].connections).length > 1) { rooms[room].connections[ Object.keys(rooms[room].connections)[1] ].admin = true } } delete rooms[room].connections[socket.id] if (!Object.keys(rooms[room].connections).length) { delete rooms[room] } socket.leave(room) io.to(room).emit('room-data', rooms[room]) }) socket.on('chat-message', ({ room, msg }) => { rooms[room].chat.push({ id: socket.id, msg }) io.to(room).emit('room-data', rooms[room]) }) socket.on('set-principle', ({ room, newPrinciple }) => { rooms[room].principle = newPrinciple io.to(room).emit('room-data', rooms[room]) }) }) res.end() } |