From 2c7526e442cfdec6762c3db0f22a8bc15ba7025f Mon Sep 17 00:00:00 2001 From: Cryptkeeper Date: Sat, 26 Dec 2015 14:18:09 -0600 Subject: [PATCH] Code clean up --- app.js | 67 +++++++++++++++++++++------------------------- lib/server.js | 73 +++++++++++++++++++++++++++------------------------ 2 files changed, 69 insertions(+), 71 deletions(-) diff --git a/app.js b/app.js index b522c2c..c7f5053 100644 --- a/app.js +++ b/app.js @@ -123,55 +123,48 @@ function startMainLoop() { } function startServices() { - server.start(function() { - // Track how many people are currently connected. - server.io.on('connect', function(client) { - // If we haven't sent out at least one round of pings, disconnect them for now. - if (Object.keys(networkHistory).length < config.servers.length) { - client.disconnect(); + server.start(); - return; - } + // Track how many people are currently connected. + server.io.on('connect', function(client) { + // We're good to connect them! + connectedClients += 1; - // We're good to connect them! - connectedClients += 1; + logger.log('info', '%s connected, total clients: %d', client.request.connection.remoteAddress, connectedClients); - logger.log('info', 'Accepted connection: %s, total clients: %d', client.request.connection.remoteAddress, connectedClients); + setTimeout(function() { + client.emit('setGraphDuration', config.graphDuration); - setTimeout(function() { - client.emit('setGraphDuration', config.graphDuration); + // Send them our previous data, so they have somewhere to start. + client.emit('updateMojangServices', mojang.toMessage()); - // Send them our previous data, so they have somewhere to start. - client.emit('updateMojangServices', mojang.toMessage()); + // Remap our associative array into just an array. + var networkHistoryKeys = Object.keys(networkHistory); - // Remap our associative array into just an array. - var networkHistoryKeys = Object.keys(networkHistory); + networkHistoryKeys.sort(); - networkHistoryKeys.sort(); + // Send each individually, this should look cleaner than waiting for one big array to transfer. + for (var i = 0; i < networkHistoryKeys.length; i++) { + client.emit('add', [networkHistory[networkHistoryKeys[i]]]); + } + }, 1); - // Send each individually, this should look cleaner than waiting for one big array to transfer. - for (var i = 0; i < networkHistoryKeys.length; i++) { - client.emit('add', [networkHistory[networkHistoryKeys[i]]]); - } - }, 1); + // Attach our listeners. + client.on('disconnect', function() { + connectedClients -= 1; - // Attach our listeners. - client.on('disconnect', function() { - connectedClients -= 1; - - logger.log('info', 'Client disconnected, total clients: %d', connectedClients); - }); - - client.on('requestHistoryGraph', function() { - if (config.logToDatabase) { - // Send them the big 24h graph. - client.emit('historyGraph', graphData); - } - }); + logger.log('info', '%s disconnected, total clients: %d', client.request.connection.remoteAddress, connectedClients); }); - startMainLoop(); + client.on('requestHistoryGraph', function() { + if (config.logToDatabase) { + // Send them the big 24h graph. + client.emit('historyGraph', graphData); + } + }); }); + + startMainLoop(); } logger.log('info', 'Booting, please wait...'); diff --git a/lib/server.js b/lib/server.js index 40c494f..c6558a4 100644 --- a/lib/server.js +++ b/lib/server.js @@ -8,8 +8,9 @@ var logger = require('./logger'); var config = require('../config.json'); -exports.start = function(callback) { - var urlMapping = []; +var urlMapping = []; + +function setupRoutes() { var routeKeys = Object.keys(config.routes); // Map the (static) routes from our config. @@ -17,45 +18,49 @@ exports.start = function(callback) { urlMapping[routeKeys[i]] = config.routes[routeKeys[i]]; } - logger.log('info', Object.keys(config.routes)); + logger.log('info', 'Routes: %s', routeKeys); +} + +function handleRequest(req, res) { + var requestUrl = url.parse(req.url).pathname; + + logger.log('info', '%s requested: %s', req.connection.remoteAddress, requestUrl); + + if (requestUrl === '/status.json') { + res.setHeader('Content-Type', 'text/plain'); + + res.write(JSON.stringify({ + error: true, + message: 'API deprecated.' + })); + + res.end(); + } else if (requestUrl in urlMapping) { + var file = urlMapping[requestUrl]; + + res.setHeader('Content-Type', mime.lookup(file)); + + fs.createReadStream(file).pipe(res); + } else { + res.statusCode = 404; + + res.write('404'); + + res.end(); + } +} + +exports.start = function() { + setupRoutes(); // Create our tiny little HTTP server. - var server = http.createServer(function(req, res) { - var requestUrl = url.parse(req.url).pathname; - - logger.log('info', '%s requested: %s', req.connection.remoteAddress, requestUrl); - - if (requestUrl === '/status.json') { - res.setHeader('Content-Type', 'text/plain'); - - res.write(JSON.stringify({ - error: true, - message: 'API deprecated.' - })); - - res.end(); - } else if (requestUrl in urlMapping) { - var file = urlMapping[requestUrl]; - - res.setHeader('Content-Type', mime.lookup(file)); - - fs.createReadStream(file).pipe(res); - } else { - res.statusCode = 404; - - res.write('404'); - - res.end(); - } - }); + var server = http.createServer(handleRequest); server.listen(config.site.port, config.site.ip); // I don't like this. But it works, I think. exports.io = io.listen(server); - // Since everything is loaded, do some final prep work. + // Since everything is loaded, let's celebrate! logger.log('info', 'Started on %s:%d', config.site.ip, config.site.port); - - callback(); }; \ No newline at end of file