create-server.js 1.1 KB

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