diff options
Diffstat (limited to 'app/index.ts')
-rw-r--r-- | app/index.ts | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/app/index.ts b/app/index.ts new file mode 100644 index 0000000..6c100b3 --- /dev/null +++ b/app/index.ts @@ -0,0 +1,43 @@ +import dotenv from 'dotenv-defaults'; +import { logger } from './logger.js' +import express from 'express'; +import router from './routes/spotify.js'; +import createWebsocket from './websocket/spotify.js'; +import { WebSocketServer } from 'ws'; +import { SpotifyClient } from './spotify/client.js'; +import connectRedis from './config/redis.js'; + +dotenv.config() + +const app = express(); +app.set('view engine', 'ejs'); +app.set('views', 'views'); + +app.use(router); + +let redis; +try { + redis = await connectRedis(); +} catch (err) { + logger.error(`Failed to connect to Redis: ${err.message}`); + process.exit(1); +} +SpotifyClient.initialise(redis); + +const server = app.listen(process.env.PORT, () => { + logger.info(`App listening on port ${process.env.PORT}`); +}); +const websocketServer: WebSocketServer = createWebsocket(server); + +const exit = () => { + logger.info('Stopping server...'); + websocketServer.clients.forEach(client => { + client.terminate(); + }); + websocketServer.close(); + server.close(() => { + process.exit(0); + }) +} +process.on('SIGINT', exit); +process.on('SIGTERM', exit); |