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.
 
 
 

64 lines
1.2 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 rest = require('../security/rest');
  8. const {
  9. port = 4000,
  10. startupMessage = 'Server: Ready'
  11. } = require('../config/serverConfig');
  12. const onConnection = require('./onConnection');
  13. const { appRoot, appFile } = require('./requestHandlers');
  14. //Methods
  15. const init = async () => {
  16. return new Promise(resolve => {
  17. const app = express();
  18. const server = http.createServer(app);
  19. const socketServer = socketIo(server, {
  20. transports: ['websocket']
  21. });
  22. global.cons.sockets = socketServer.sockets;
  23. app.use(compression());
  24. app.use(minify());
  25. app.use((req, res, next) => {
  26. if (
  27. !rest.willHandle(req.url) &&
  28. req.url.indexOf('/server') !== 0 &&
  29. req.url.indexOf('/mods') !== 0
  30. )
  31. req.url = '/client/' + req.url;
  32. next();
  33. });
  34. rest.init(app);
  35. app.get('/', appRoot);
  36. app.get(/^(.*)$/, appFile);
  37. socketServer.on('connection', onConnection);
  38. server.listen(port, () => {
  39. _.log(startupMessage);
  40. resolve();
  41. });
  42. });
  43. };
  44. //Exports
  45. module.exports = {
  46. init
  47. };