Was private
server.js
var http = require("http"); var url = require("url"); var serverStartedDateTimeFormatted = formatDate(new Date()); var requestCount = -1; var requestStack = {}; var responseToSend = ""; /* Use of seq numbers: The client sends in a request with a seq no (starts at 0 on a a client restart) client.request is added into clientStack if doesn't exist, replaces existing if it does clientStack.client.request.responseSent is set to false Client request response is setup by a setTimeout call to call response function after x seconds If an interrupt comes in for a client: - call the response function immediately The response function: - checks clientStack.client.responseSent is set to false and if so: - sends the response - nulls clientStack.client.request & response (will this save ram?) */ function start() { writeLogWithTimeStamp("Starting"); function onRequest(request, response) { request.url_parts = url.parse(request.url, true); request.content = ""; writeLogWithTimeStamp(request.url_parts.pathname); if ( request.url_parts.pathname == '/alarm' && "login" in request.url_parts.query && "password" in request.url_parts.query && "xml" in request.url_parts.query ) { requestCount++; requestStack[requestCount] = {}; requestStack[requestCount].login = request.url_parts.query.login; requestStack[requestCount].password = request.url_parts.query.password; requestStack[requestCount].xml = request.url_parts.query.xml; responseToSend = 'hello'; response.writeHead(200, { "Content-Type": "text/plain" }); response.write(responseToSend); response.end(); //request.connection.end(); // force a disconnect? } else { responseToSend = 'Whaaaat!'; response.writeHead(404, { "Content-Type": "text/plain" }); response.write(responseToSend); response.end(); //request.connection.end(); // force a disconnect? } } var server = http.createServer(onRequest).listen(process.env.PORT, process.env.IP); writeLogServerUpSince(); setInterval(function () { writeLogServerUpSince(); }, 60000); console.log(server.PORT); } function writeLogWithTimeStamp(message) { console.log(formatDate(new Date()) + " " + message); } function writeLog(message) { console.log(message); } function writeLogServerUpSince() { writeLogWithTimeStamp("Server up since " + serverStartedDateTimeFormatted); } function pad(number, length) { var str = '' + number; while (str.length < length) { str = '0' + str; } return str; } function formatDate(date) { var dateStamp = ''; dateStamp += date.getFullYear(); dateStamp += '-'; dateStamp += date.getMonth() + 1; dateStamp += '-'; dateStamp += date.getDate(); dateStamp += '_'; dateStamp += pad(date.getHours(), 2); dateStamp += ':'; dateStamp += pad(date.getMinutes(), 2); dateStamp += ':'; dateStamp += pad(date.getSeconds(), 2); dateStamp += ':'; dateStamp += pad(date.getMilliseconds(), 3); return dateStamp; } function is_int(value) { if ((parseFloat(value) == parseInt(value)) && !isNaN(value)) { return true; } else { return false; } } process.on('uncaughtException', function (err) { console.log((new Date()).toUTCString() + ' uncaughtException:', err.message); console.error(err.stack); //process.exit(1); }); exports.start = start; start();