www 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. #!/usr/bin/env node
  2. /**
  3. * Module dependencies.
  4. */
  5. var {app, socketsrv} = require('../app');
  6. //var socketsrv = require('../socketsrv');
  7. var debug = require('debug')('quiz-tftb:server');
  8. var http = require('http');
  9. /**
  10. * Get port from environment and store in Express.
  11. */
  12. var port = normalizePort(process.env.PORT || '12123');
  13. app.set('port', port);
  14. /**
  15. * Create HTTP server.
  16. */
  17. var server = http.createServer(app);
  18. socketsrv.io.attach(server);
  19. /**
  20. * Listen on provided port, on all network interfaces.
  21. */
  22. server.listen(port);
  23. server.on('error', onError);
  24. server.on('listening', onListening);
  25. /**
  26. * Normalize a port into a number, string, or false.
  27. */
  28. function normalizePort(val) {
  29. var port = parseInt(val, 10);
  30. if (isNaN(port)) {
  31. // named pipe
  32. return val;
  33. }
  34. if (port >= 0) {
  35. // port number
  36. return port;
  37. }
  38. return false;
  39. }
  40. /**
  41. * Event listener for HTTP server "error" event.
  42. */
  43. function onError(error) {
  44. if (error.syscall !== 'listen') {
  45. throw error;
  46. }
  47. var bind = typeof port === 'string'
  48. ? 'Pipe ' + port
  49. : 'Port ' + port;
  50. // handle specific listen errors with friendly messages
  51. switch (error.code) {
  52. case 'EACCES':
  53. console.error(bind + ' requires elevated privileges');
  54. process.exit(1);
  55. break;
  56. case 'EADDRINUSE':
  57. console.error(bind + ' is already in use');
  58. process.exit(1);
  59. break;
  60. default:
  61. throw error;
  62. }
  63. }
  64. /**
  65. * Event listener for HTTP server "listening" event.
  66. */
  67. function onListening() {
  68. var addr = server.address();
  69. var bind = typeof addr === 'string'
  70. ? 'pipe ' + addr
  71. : 'port ' + addr.port;
  72. debug('Listening on ' + bind);
  73. }