server.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. const fs = require('fs');
  2. const https = require('https');
  3. const express = require('express');
  4. const portfinder = require('portfinder');
  5. class Server {
  6. constructor(useHttps = false) {
  7. this.https = false;
  8. this.app = express();
  9. this.app.use(express.json());
  10. }
  11. route(router) {
  12. this.router = new router(this.app);
  13. this.router.route();
  14. }
  15. start(port, highestPort = null) {
  16. portfinder.basePort = port;
  17. portfinder.highestPort = (highestPort === null) ? port : highestPort;
  18. return new Promise((resolve, reject) => {
  19. // Tentative de demarrage du serveur sur la plage de port definit
  20. portfinder.getPortPromise().then((serverPort) => {
  21. if (this.https) {
  22. this.httpsServer(serverPort);
  23. } else {
  24. this.httpServer(serverPort);
  25. }
  26. resolve(serverPort);
  27. }).catch((err) => {
  28. reject(err);
  29. });
  30. });
  31. }
  32. httpServer(port) {
  33. this.app.listen(port);
  34. }
  35. httpsServer(port) {
  36. https.createServer({
  37. key: fs.readFileSync('./data/key.pem'),
  38. cert: fs.readFileSync('./data/cert.pem')
  39. }, this.app).listen(port);
  40. }
  41. }
  42. // Export
  43. module.exports = new Server();