reldens
Version:
Reldens - MMORPG Platform
58 lines (47 loc) • 1.52 kB
JavaScript
/**
*
* Reldens - GameServer
*
*/
const Monitor = require('@colyseus/monitor');
const basicAuth = require('express-basic-auth');
const { Server } = require('@colyseus/core');
const { Logger } = require('@reldens/utils');
class GameServer extends Server
{
constructor(options)
{
// @TODO - BETA - Create a Colyseus driver.
super(options);
this.onShutdown(() => this.runOnShutDown());
}
attachMonitor(app, config)
{
// @TODO - BETA - Extract into Colyseus driver.
this.hasAuthentication(config) ? this.attacheSecuredMonitor(config, app) : this.attachUnsecureMonitor(app);
}
attachUnsecureMonitor(app)
{
app.use('/colyseus', Monitor.monitor(this));
Logger.info('Attached UNSECURE Monitor at /colyseus.');
}
attacheSecuredMonitor(config, app)
{
let basicAuthMiddleware = basicAuth({
users: {[config.user]: config.pass},
// sends WWW-Authenticate header, which will prompt the user to fill credentials in:
challenge: true
});
app.use('/colyseus', basicAuthMiddleware, Monitor.monitor(this));
Logger.info('Attached secure Monitor at /colyseus.');
}
hasAuthentication(config)
{
return config && config.auth && config.user && config.pass;
}
runOnShutDown()
{
Logger.info('Game Server is going down.');
}
}
module.exports.GameServer = GameServer;