12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- const express = require('express')
- const app = express()
- const server = require('http').Server(app)
- const io = require('socket.io')(server)
- const { v4: uuidV4 } = require('uuid')
- const connectedClients = {} // {"roomId1": ["userId1", "userId2"], "roomId2" : ["userId3"]}
- app.set('view engine', 'ejs')
- app.use(express.static('public'))
- app.get('/', (req, res) => {
- res.redirect(`/${uuidV4()}`)
- })
- app.get('/:room', (req, res) => {
- res.render('room', { roomId: req.params.room })
- })
- io.on('connection', socket => {
- socket.on('join-room', (roomId, userId) => {
- if(!(roomId in connectedClients)){
- connectedClients[roomId] = []
- }
- socket.emit('connected-clients', connectedClients[roomId]);
- connectedClients[roomId].push(userId)
- socket.join(roomId)
- socket.to(roomId).emit('user-connected', userId)
- socket.on('disconnect', () => {
- socket.to(roomId).emit('user-disconnected', userId)
- const index = connectedClients[roomId].indexOf(socket.id)
- if (index !== -1) {
- connectedClients[roomId].splice(index, 1)
- if(connectedClients[roomId].length == 0){
- delete connectedClients[roomId]
- }
- }
- })
- })
- })
- server.listen(4230)
- process.on('SIGTERM', () => {
- console.info("Interrupted");
- process.exit(0);
- })
|