โ ะะฐะทะฐะดconst config = require('./config');
const { app, server } = require('./app');
const scheduler = require('./services/scheduler');
const db = require('./services/db');
const logger = require('./utils/logger');
scheduler.start();
server.listen(config.port, '0.0.0.0', () => {
logger.info(`Server running on port ${config.port}`);
logger.info(`WebSocket server ready on ws://0.0.0.0:${config.port}`);
});
// โโ Graceful Shutdown โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
function gracefulShutdown(signal) {
logger.info(`${signal} received. Shutting down gracefully...`);
server.close(() => {
logger.info('HTTP server closed.');
db.$disconnect()
.then(() => {
logger.info('Database connection closed.');
process.exit(0);
})
.catch(err => {
logger.error(`DB disconnect error: ${err.message}`);
process.exit(1);
});
});
// Force shutdown after 10s if graceful fails
setTimeout(() => {
logger.error('Forced shutdown after timeout.');
process.exit(1);
}, 10000);
}
process.on('SIGTERM', () => gracefulShutdown('SIGTERM'));
process.on('SIGINT', () => gracefulShutdown('SIGINT'));