123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- const express = require('express')
- const app = express()
- // const server = require('http').Server(app)
- const fs = require('fs');
- const options = {
- key: fs.readFileSync("server.key"),
- cert: fs.readFileSync("server.crt"),
- };
- const server = require('https').createServer(options, 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.use(express.json());
- app.get('/', (req, res) => {
- res.redirect(`/${uuidV4()}`)
- })
- app.get('/:room', (req, res) => {
- res.render('room', { roomId: req.params.room, data: {} })
- })
- app.post('/', (req, res) => {
- res.redirect(307,`/${uuidV4()}`)
- })
- app.post('/:room', (req, res) => {
- let data = req.body;
- res.render('room', { roomId: req.params.room, data: data })
- })
- 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('message', (msg) => {
- socket.to(roomId).emit('message', msg)
- })
- 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);
- })
|