mirror of
https://github.com/AlecM33/Werewolf.git
synced 2025-12-26 15:57:50 +01:00
77 lines
2.6 KiB
JavaScript
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')}`);
|
|
});
|