app.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. /*!
  2. * graceful - example/connect-with-cluster/app.js
  3. * Copyright(c) 2013 fengmk2 <fengmk2@gmail.com>
  4. * MIT Licensed
  5. */
  6. "use strict";
  7. /**
  8. * Module dependencies.
  9. */
  10. var http = require('http');
  11. var connect = require('connect');
  12. var app = connect(
  13. function (req, res, next) {
  14. req.on('end', function () {
  15. if (req.url === '/asyncerror') {
  16. setTimeout(function () {
  17. foo.bar();
  18. }, 10);
  19. return;
  20. }
  21. process.nextTick(function () {
  22. res.setHeader('content-type', 'text/json');
  23. res.end(JSON.stringify({
  24. method: req.method,
  25. url: req.url,
  26. headers: req.headers,
  27. Connection: res.getHeader('connection') || 'keep-alive',
  28. pid: process.pid,
  29. }));
  30. });
  31. });
  32. req.resume();
  33. },
  34. function (err, req, res, next) {
  35. var domainThrown = err.domain_thrown || err.domainThrown;
  36. var msg = 'domainThrown: ' + domainThrown + '\n' + err.stack;
  37. console.error('%s %s\n%s', req.method, req.url, msg);
  38. res.statusCode = 500;
  39. res.setHeader('content-type', 'text/plain');
  40. res.end(msg + '\n');
  41. }
  42. );
  43. var server = http.createServer(app);
  44. module.exports = server;