const express = require("express"); const { Server } = require("socket.io"); const http = require("http"); const app = express(); const path = require("path"); app.use(express.static(path.join(__dirname, './dist'))); app.disable("x-powered-by"); app.get('*', (req, res) => res.sendFile(path.join(__dirname, './dist', 'index.html'))); const server = http.createServer(app); const io = new Server(server, { cors: {origin: "*"}, pingTimeout: 30000, pingInterval: 10000 }); const roomController = require('./controller/room'); const gameController = require('./controller/game'); roomController.setCleanupGameState(gameController.cleanupGameState); io.on("connection", (socket) => { try { require("./handler/connection")(io)(socket); } catch (error) { console.error('Error handling socket connection:', error); socket.emit('error', { message: 'Internal server error' }); } }); server.on('error', (error) => { console.error('Server error:', error); }); const PORT = process.env.PORT || 5287; server.listen(PORT, () => { console.log(`Server running on port ${PORT}`); }); process.on('SIGINT', () => { console.log('Server shutting down...'); server.close(() => { console.log('Server closed'); process.exit(0); }); });