You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

73 regels
1.4 KiB

  1. //Imports
  2. const http = require('http');
  3. const socketIo = require('socket.io');
  4. const express = require('express');
  5. const compression = require('compression');
  6. const minify = require('express-minify');
  7. const lessMiddleware = require('less-middleware');
  8. const rest = require('../security/rest');
  9. const {
  10. port = 4000,
  11. startupMessage = 'Server: Ready',
  12. nodeEnv
  13. } = require('../config/serverConfig');
  14. const compileLessOnce = nodeEnv === 'production';
  15. const onConnection = require('./onConnection');
  16. const { appRoot, appFile } = require('./requestHandlers');
  17. //Methods
  18. const init = async () => {
  19. return new Promise(resolve => {
  20. const app = express();
  21. const server = http.createServer(app);
  22. const socketServer = socketIo(server, {
  23. transports: ['websocket']
  24. });
  25. global.cons.sockets = socketServer.sockets;
  26. app.use(compression());
  27. app.use(minify());
  28. app.use((req, res, next) => {
  29. if (
  30. !rest.willHandle(req.url) &&
  31. req.url.indexOf('/server') !== 0 &&
  32. req.url.indexOf('/mods') !== 0
  33. )
  34. req.url = '/client/' + req.url;
  35. next();
  36. });
  37. app.use(lessMiddleware('../', {
  38. once: compileLessOnce,
  39. force: !compileLessOnce
  40. }));
  41. rest.init(app);
  42. app.get('/', appRoot);
  43. app.get(/^(.*)$/, appFile);
  44. socketServer.on('connection', onConnection);
  45. server.listen(port, () => {
  46. _.log(startupMessage);
  47. resolve();
  48. });
  49. });
  50. };
  51. //Exports
  52. module.exports = {
  53. init
  54. };