create-server.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. // Forked workers will run this code when found to not be
  2. // the master of the cluster.
  3. var http = require('http');
  4. var parseurl = require('parseurl'); // faster than native nodejs url package
  5. // Initialize routes & their handlers (once)
  6. var basicHandler = require('./routing').BasicHandler;
  7. var queryHandler = require('./routing').QueryHandler;
  8. var routeNotImplemented = require('./helper').responses.routeNotImplemented;
  9. module.exports = http.createServer(function (req, res) {
  10. var url = parseurl(req);
  11. var route = url.pathname;
  12. // Routes that do no require a `queries` parameter
  13. if (basicHandler.has(route)) {
  14. return basicHandler.handle(route, req, res);
  15. } else {
  16. // naive: only works if there is one query param, as is the case in TFB
  17. var queries = url.query.split('=')[1]
  18. queries = ~~(queries) || 1;
  19. queries = Math.min(Math.max(queries, 1), 500);
  20. if (queryHandler.has(route)) {
  21. return queryHandler.handle(route, queries, req, res);
  22. } else {
  23. return routeNotImplemented(req, res);
  24. }
  25. }
  26. }).listen(8080, function() {
  27. console.log("NodeJS worker listening on port 8080");
  28. });