Files
Werewolf/index.js
2022-05-12 12:08:16 -04:00

77 lines
2.6 KiB
JavaScript

'use strict';
const express = require('express');
const path = require('path');
const app = express();
const bodyParser = require('body-parser');
const GameManager = require('./server/modules/GameManager.js');
const globals = require('./server/config/globals');
const ServerBootstrapper = require('./server/modules/ServerBootstrapper');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: true
}));
const args = ServerBootstrapper.processCLIArgs();
const logger = require('./server/modules/Logger')(args.logLevel);
logger.info('LOG LEVEL IS: ' + args.logLevel);
const index = ServerBootstrapper.createServerWithCorrectHTTPProtocol(app, args.useHttps, args.port, logger);
app.set('port', parseInt(process.env.PORT) || args.port || 8080);
const inGameSocketServer = ServerBootstrapper.createSocketServer(index, app, args.port, logger);
const gameNamespace = ServerBootstrapper.createGameSocketNamespace(inGameSocketServer, logger);
let gameManager;
/* Instantiate the singleton game manager */
if (process.env.NODE_ENV.trim() === 'development') {
gameManager = new GameManager(logger, globals.ENVIRONMENT.LOCAL, gameNamespace).getInstance();
} else {
gameManager = new GameManager(logger, globals.ENVIRONMENT.PRODUCTION, gameNamespace).getInstance();
}
gameNamespace.on('connection', function (socket) {
socket.on('disconnecting', (reason) => {
logger.trace('client socket disconnecting because: ' + reason);
});
gameManager.addGameSocketHandlers(gameNamespace, socket);
});
/* api endpoints */
const games = require('./server/api/GamesAPI');
app.use('/api/games', games);
/* serve all the app's pages */
app.use('/manifest.json', (req, res) => {
res.sendFile(path.join(__dirname, './manifest.json'));
});
app.use('/favicon.ico', (req, res) => {
res.sendFile(path.join(__dirname, './client/favicon_package/favicon.ico'));
});
const router = require('./server/routes/router');
app.use('', router);
app.use('/dist', express.static(path.join(__dirname, './client/dist')));
// set up routing for static content that isn't being bundled.
app.use('/images', express.static(path.join(__dirname, './client/src/images')));
app.use('/styles', express.static(path.join(__dirname, './client/src/styles')));
app.use('/webfonts', express.static(path.join(__dirname, './client/src/webfonts')));
app.use('/robots.txt', (req, res) => {
res.sendFile(path.join(__dirname, './client/robots.txt'));
});
app.use(function (req, res) {
res.sendFile(path.join(__dirname, './client/src/views/404.html'));
});
index.listen(app.get('port'), function () {
logger.info(`Starting server on port ${app.get('port')}`);
});