const fs = require('fs'); const express = require('express'); const http = require('http'); const { Server } = require('socket.io'); const compression = require('compression'); const events = Object.fromEntries( fs.readdirSync('./src/event') .map(event => [event.slice(0, -3), require('./src/event/' + event)]) ); const PORT = process.env.PORT || 3435; const app = express(); app.use(compression()); const server = http.createServer(app); const io = new Server(server, { cors: { origin: true, }, }); io.on('connection', (socket) => { for (let event in events) { socket.on(event, (msg, callback) => { if (!events[event]) { callback('no such event ' + event); return; } events[event](msg, callback, socket); }); } socket.on('disconnect', reason => { let user = vybe.users[socket.username]; if (user) user.sockets.splice(user.sockets.indexOf(socket), 1); }) }); global.vybe = { users: {} }; server.listen(PORT, () => { console.log('server running on port ' + PORT); }); app.use(express.static('client'));