/* * tinyserver.js * * author: Kyle * * teh server, what else is new? * */ var http = require('http'); var util = require('util'); var url = require('url'); var express = require('express'); var router = require('./route'); var serverConfig = { port: 8080, hostname: 'localhost' /* eth interface ip? */ }; /* current list of active users, key-value pairs */ var activeUsers = []; /* this function is poked upon 'request' event */ function requestListener(req, res) { var reqdata = ''; /* for POST data */ req.on('data', function(chunk) { reqdata += chunk; } ); req.on('close', function() { util.log('[reqlistener] client terminated before we could respond'); }); req.on('end', function() { util.log(util.format('[reqlistener] finished recv data%s', (reqdata.length == 0) ? '' : ', got ' + reqdata.length + ' bytes')); /* should be some logic, e.g. blueprint 1 */ util.log('[reqlistener] request kind: ' + req.method); /* routing for pathname, figure out what request we have */ var urlquery = url.parse(req.url); //console.log('[reqlistener] query dump:\n' + util.inspect(urlquery)); router.route(urlquery, reqdata, res); }); } //var server = http.createServer(requestListener); /* vanilla api */ var server = express.createServer(); server.configure(function() { server.use(express.logger('dev')); server.use(express.favicon()); server.use(express.bodyParser()); /* parses body of http? --> populates req.body, hmmm */ server.use(express.cookieParser()); server.use(express.session({ secret: 'keyboard cat'})); /* server.use(express.static(__dirname + '/public')); */ }); server.use(requestListener); /* using connect module here */ server.listen(serverConfig.port, serverConfig.hostname, function() { /* could use for proxy stuff? this function is called when listening event is emitted */ util.log('[server] listening on port ' + serverConfig.port); }); server.on('connection', function(socket) { util.log('[server] new connection from ' + socket.remoteAddress + ':' + socket.remotePort + ', read ' + socket.bytesRead + ' bytes'); //console.log(util.inspect(socket), false /* do not show non-enum props */, true); }); server.on('close', function() { util.log('[server] server shutdown'); }); server.on('clientError', function(exception) { util.log('[server] ' + exception); });