From f5a2be82ca40c39a3bce5b1f33e48b5583c75000 Mon Sep 17 00:00:00 2001 From: "C. Fuhrman" Date: Fri, 25 Oct 2024 15:31:48 -0400 Subject: [PATCH 1/2] create https or http server according to environment --- server/app.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/server/app.js b/server/app.js index e53db50..5399c11 100644 --- a/server/app.js +++ b/server/app.js @@ -1,6 +1,7 @@ // Import API const express = require("express"); const http = require("http"); +const https = require("https"); const dotenv = require('dotenv') // Import Sockets @@ -61,8 +62,13 @@ const configureServer = (httpServer) => { }); }; -// Start sockets -const server = http.createServer(app); +// Start sockets (depending on the dev or prod environment) +let server; +if (process.env.NODE_ENV === 'production') { + server = https.createServer(app); +} else { + server = http.createServer(app); +} const io = configureServer(server); setupWebsocket(io); From 0a8f8580f493530462168f926ddebb50441bd6ea Mon Sep 17 00:00:00 2001 From: "C. Fuhrman" Date: Mon, 28 Oct 2024 12:53:13 -0400 Subject: [PATCH 2/2] Create an https server (unless running in dev mode) Not sure this will work in a container, however, with nginx in front of it. --- server/app.js | 10 +++--- server/package-lock.json | 75 +++++++++++++++++++++++++--------------- server/package.json | 3 +- server/socket/socket.js | 14 ++++---- 4 files changed, 62 insertions(+), 40 deletions(-) diff --git a/server/app.js b/server/app.js index 5399c11..c0f4d7c 100644 --- a/server/app.js +++ b/server/app.js @@ -42,7 +42,7 @@ const folderRouter = require('./routers/folders.js'); const quizRouter = require('./routers/quiz.js'); const imagesRouter = require('./routers/images.js') -// Setup environement +// Setup environment dotenv.config(); const errorHandler = require("./middleware/errorHandler.js"); @@ -64,10 +64,12 @@ const configureServer = (httpServer) => { // Start sockets (depending on the dev or prod environment) let server; -if (process.env.NODE_ENV === 'production') { - server = https.createServer(app); -} else { +if (process.env.NODE_ENV === 'development') { + console.log('Démarrage en mode dev'); server = http.createServer(app); +} else { + console.log('Démarrage en mode prod'); + server = https.createServer(app); } const io = configureServer(server); diff --git a/server/package-lock.json b/server/package-lock.json index e17d76d..644d9ea 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -21,6 +21,7 @@ "socket.io-client": "^4.7.2" }, "devDependencies": { + "cross-env": "^7.0.3", "jest": "^29.7.0", "jest-mock": "^29.7.0", "nodemon": "^3.0.1", @@ -1231,9 +1232,9 @@ "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" }, "node_modules/@types/cors": { - "version": "2.8.15", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.15.tgz", - "integrity": "sha512-n91JxbNLD8eQIuXDIChAN1tCKNWCEgpceU9b7ZMbFA+P+Q4yIeh80jizFLEvolRPc1ES0VdwFlGv+kJTSirogw==", + "version": "2.8.17", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", + "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", "dependencies": { "@types/node": "*" } @@ -2046,9 +2047,9 @@ "dev": true }, "node_modules/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", "engines": { "node": ">= 0.6" } @@ -2102,6 +2103,24 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" + } + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -2286,16 +2305,16 @@ } }, "node_modules/engine.io": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.5.tgz", - "integrity": "sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==", + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.2.tgz", + "integrity": "sha512-gmNvsYi9C8iErnZdVcJnvCpSKbWTt1E8+JZo8b+daLninywUWi5NQ5STSHZ9rFjFO7imNcvb8Pc5pe/wMR5xEw==", "dependencies": { "@types/cookie": "^0.4.1", "@types/cors": "^2.8.12", "@types/node": ">=10.0.0", "accepts": "~1.3.4", "base64id": "2.0.0", - "cookie": "~0.4.1", + "cookie": "~0.7.2", "cors": "~2.8.5", "debug": "~4.3.1", "engine.io-parser": "~5.2.1", @@ -2347,19 +2366,19 @@ } }, "node_modules/engine.io/node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", "engines": { "node": ">= 0.6" } }, "node_modules/engine.io/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -2371,9 +2390,9 @@ } }, "node_modules/engine.io/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/error-ex": { "version": "1.3.2", @@ -2496,16 +2515,16 @@ } }, "node_modules/express": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz", - "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==", + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", + "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.6.0", + "cookie": "0.7.1", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", @@ -5092,15 +5111,15 @@ } }, "node_modules/socket.io": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.2.tgz", - "integrity": "sha512-bvKVS29/I5fl2FGLNHuXlQaUH/BlzX1IN6S+NKLNZpBsPZIDH+90eQmCs2Railn4YUiww4SzUedJ6+uzwFnKLw==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.1.tgz", + "integrity": "sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg==", "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", "cors": "~2.8.5", "debug": "~4.3.2", - "engine.io": "~6.5.2", + "engine.io": "~6.6.0", "socket.io-adapter": "~2.5.2", "socket.io-parser": "~4.2.4" }, diff --git a/server/package.json b/server/package.json index a61dcfb..d3e8919 100644 --- a/server/package.json +++ b/server/package.json @@ -6,7 +6,7 @@ "scripts": { "build": "webpack --config webpack.config.js", "start": "node app.js", - "dev": "nodemon app.js", + "dev": "cross-env NODE_ENV=development nodemon app.js", "test": "jest --colors" }, "keywords": [], @@ -25,6 +25,7 @@ "socket.io-client": "^4.7.2" }, "devDependencies": { + "cross-env": "^7.0.3", "jest": "^29.7.0", "jest-mock": "^29.7.0", "nodemon": "^3.0.1", diff --git a/server/socket/socket.js b/server/socket/socket.js index 48b4bdb..3bb0a76 100644 --- a/server/socket/socket.js +++ b/server/socket/socket.js @@ -16,12 +16,12 @@ const setupWebsocket = (io) => { } totalConnections++; - console.log( - "A user connected:", - socket.id, - "| Total connections:", - totalConnections - ); + // console.log( + // "A user connected:", + // socket.id, + // "| Total connections:", + // totalConnections + // ); socket.on("create-room", (sentRoomName) => { if (sentRoomName) { @@ -68,7 +68,7 @@ const setupWebsocket = (io) => { }); socket.on("next-question", ({ roomName, question }) => { - console.log("next-question", roomName, question); + // console.log("next-question", roomName, question); socket.to(roomName).emit("next-question", question); });