vybe/index.js

49 lines
1.0 KiB
JavaScript
Raw Normal View History

2024-04-21 23:31:37 -07:00
const fs = require('fs');
2024-04-15 14:27:21 -07:00
const express = require('express');
const http = require('http');
const { Server } = require('socket.io');
const compression = require('compression');
2023-05-08 21:40:16 -07:00
2023-12-28 12:59:17 -08:00
const events = Object.fromEntries(
2024-04-21 23:31:37 -07:00
fs.readdirSync('./src/event')
.map(event => [event.slice(0, -3), require('./src/event/' + event)])
2023-12-28 12:59:17 -08:00
);
2023-07-30 18:06:21 -07:00
2024-04-21 23:31:37 -07:00
const PORT = process.env.PORT || 3435;
2023-05-08 21:40:16 -07:00
const app = express();
2023-05-29 18:08:20 -07:00
app.use(compression());
2023-05-08 21:40:16 -07:00
const server = http.createServer(app);
2023-05-05 19:33:05 -07:00
const io = new Server(server, {
2023-07-30 18:06:21 -07:00
cors: {
origin: true,
},
2023-05-05 19:33:05 -07:00
});
2024-04-15 14:27:21 -07:00
io.on('connection', (socket) => {
2023-07-30 18:06:21 -07:00
for (let event in events) {
2024-04-28 22:55:54 -07:00
socket.on(event, (msg, callback) => {
if (!events[event]) {
callback('no such event ' + event);
return;
}
events[event](msg, callback, socket);
});
2023-07-30 18:06:21 -07:00
}
2023-12-28 11:54:16 -08:00
socket.on('disconnect', reason => {
2024-04-28 22:55:54 -07:00
let user = vybe.users[socket.username];
if (user)
user.sockets.splice(user.sockets.indexOf(socket), 1);
2023-12-28 11:54:16 -08:00
})
2023-05-05 19:33:05 -07:00
});
2024-04-28 22:55:54 -07:00
global.vybe = {
users: {}
};
2023-05-05 19:33:05 -07:00
server.listen(PORT, () => {
2024-04-15 14:27:21 -07:00
console.log('server running on port ' + PORT);
2023-05-05 19:33:05 -07:00
});
2023-05-06 20:55:04 -07:00
2024-04-15 14:27:21 -07:00
app.use(express.static('client'));