app.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. // express and http
  2. var express = require('express');
  3. var app = express();
  4. // Create the server here, so socket.io can control it.
  5. var server = require('http').Server(app);
  6. var io = require('socket.io')(server);
  7. // view engine setup
  8. var path = require('path');
  9. app.set('views', path.join(__dirname, 'views'));
  10. app.set('view engine', 'hbs');
  11. // logging
  12. var logger = require('morgan');
  13. app.use(logger('dev'));
  14. var routes = require('./routes/index')(io);
  15. // Unused (for now) cookies and favicons
  16. //var favicon = require('serve-favicon');
  17. //var cookieParser = require('cookie-parser');
  18. // uncomment after placing your favicon in /public
  19. //app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
  20. //app.use(cookieParser());
  21. app.use(express.static(path.join(__dirname, 'public')));
  22. // // Add socket.io to res in the event loop.
  23. // app.use(function(req, res, next){
  24. // res.io = io;
  25. // next();
  26. // });
  27. // Add the route.
  28. app.use('/', routes);
  29. // catch 404 and forward to error handler
  30. app.use(function(req, res, next) {
  31. var err = new Error('Not Found');
  32. err.status = 404;
  33. next(err);
  34. });
  35. // error handlers
  36. // development error handler
  37. // will print stacktrace
  38. if (app.get('env') === 'development') {
  39. app.use(function(err, req, res, next) {
  40. res.status(err.status || 500);
  41. res.render('error', {
  42. message: err.message,
  43. error: err
  44. });
  45. });
  46. }
  47. // production error handler
  48. // no stacktraces leaked to user
  49. app.use(function(err, req, res, next) {
  50. res.status(err.status || 500);
  51. res.render('error', {
  52. message: err.message,
  53. error: {}
  54. });
  55. });
  56. // Export the server to bin/www, since we're creating it here.
  57. module.exports = {app: app, server: server, io: io};