diff --git a/docker-compose.yaml b/docker-compose.yaml index 9350164..6a46630 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -27,6 +27,17 @@ services: - mongo restart: always + quizroom: + build: + context: ./quizRoom + dockerfile: Dockerfile + container_name: quizroom + ports: + - "4500:4500" + depends_on: + - backend + restart: always + # Ce conteneur sert de routeur pour assurer le bon fonctionnement de l'application nginx: image: fuhrmanator/evaluetonsavoir-routeur:latest diff --git a/quizRoom/Dockerfile b/quizRoom/Dockerfile index b509792..8e4af13 100644 --- a/quizRoom/Dockerfile +++ b/quizRoom/Dockerfile @@ -1,5 +1,5 @@ # Use the Node base image -FROM node:18 +FROM node:18 as quizroom # Create a working directory WORKDIR /usr/src/app diff --git a/quizRoom/app.ts b/quizRoom/app.ts index f6ec1dc..494cdd6 100644 --- a/quizRoom/app.ts +++ b/quizRoom/app.ts @@ -1,5 +1,6 @@ import http from "http"; import { Server, ServerOptions } from "socket.io"; +import { GlideClient, GlideClientConfiguration } from '@valkey/valkey-glide'; // Import setupWebsocket import { setupWebsocket } from "./socket/setupWebSocket"; diff --git a/quizRoom/package-lock.json b/quizRoom/package-lock.json index 21c35e4..2351af6 100644 --- a/quizRoom/package-lock.json +++ b/quizRoom/package-lock.json @@ -9,6 +9,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { + "@valkey/valkey-glide": "^1.1.0", "http": "^0.0.1-security", "socket.io": "^4.8.1" }, @@ -55,6 +56,70 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", + "optional": true + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "optional": true + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "optional": true + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", + "optional": true + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "optional": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", + "optional": true + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", + "optional": true + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", + "optional": true + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", + "optional": true + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", + "optional": true + }, "node_modules/@socket.io/component-emitter": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", @@ -193,6 +258,148 @@ "@types/send": "*" } }, + "node_modules/@valkey/valkey-glide": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@valkey/valkey-glide/-/valkey-glide-1.1.0.tgz", + "integrity": "sha512-7+NJxMiCfE/p5p7HpLnEKOVaYEcrMnTbGNT9ZBjP0QC8KO7BwSLnWlRYnnb4/6j6zEBc7ugVZ0CvJjJvTslcjw==", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "optionalDependencies": { + "@valkey/valkey-glide-darwin-arm64": "1.1.0", + "@valkey/valkey-glide-darwin-x64": "1.1.0", + "@valkey/valkey-glide-linux-arm64": "1.1.0", + "@valkey/valkey-glide-linux-musl-arm64": "1.1.0", + "@valkey/valkey-glide-linux-musl-x64": "1.1.0", + "@valkey/valkey-glide-linux-x64": "1.1.0" + } + }, + "node_modules/@valkey/valkey-glide-darwin-arm64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@valkey/valkey-glide-darwin-arm64/-/valkey-glide-darwin-arm64-1.1.0.tgz", + "integrity": "sha512-0ekMcRVcC+VhNG3ZeiLFNrIi9nxq2TM8Y0qoyGPpcb3q0+4AaSnHQR2YPnvn5Befq75ODJ+RctxQ6fbYNaArDg==", + "bundleDependencies": [ + "glide-rs" + ], + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "glide-rs": "file:rust-client", + "long": "^5.2.3", + "npmignore": "^0.3.1", + "protobufjs": "^7.4.0" + } + }, + "node_modules/@valkey/valkey-glide-darwin-x64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@valkey/valkey-glide-darwin-x64/-/valkey-glide-darwin-x64-1.1.0.tgz", + "integrity": "sha512-fFfV5YPQ3RAnwlyjvyvfq6gxFo1FZMhChqINxxtKClwzIFg7493p3WNuOhH0M+CNyIGCle9tMx8dLPNWVdVk0Q==", + "bundleDependencies": [ + "glide-rs" + ], + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "glide-rs": "file:rust-client", + "long": "^5.2.3", + "npmignore": "^0.3.1", + "protobufjs": "^7.4.0" + } + }, + "node_modules/@valkey/valkey-glide-linux-arm64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@valkey/valkey-glide-linux-arm64/-/valkey-glide-linux-arm64-1.1.0.tgz", + "integrity": "sha512-jY9MOeu0Ck9yLMv+LUTDCytDi8JMuWd6w27t2BKWvdnFSOLmZcKqBhkfIhQWBoXqo42uhcxzHULC5Pwtl0jLQg==", + "bundleDependencies": [ + "glide-rs" + ], + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "dependencies": { + "glide-rs": "file:rust-client", + "long": "^5.2.3", + "npmignore": "^0.3.1", + "protobufjs": "^7.4.0" + } + }, + "node_modules/@valkey/valkey-glide-linux-musl-arm64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@valkey/valkey-glide-linux-musl-arm64/-/valkey-glide-linux-musl-arm64-1.1.0.tgz", + "integrity": "sha512-8H8BLG4ZEZuZSvuoYGKO157r/gMI3QnfjGMv3J+uzP2yKj2vZdqh9I46wiJsHl6B3gxFxtrleX7zoo5HY5NcoQ==", + "bundleDependencies": [ + "glide-rs" + ], + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "dependencies": { + "glide-rs": "file:rust-client", + "long": "^5.2.3", + "npmignore": "^0.3.1", + "protobufjs": "^7.4.0" + } + }, + "node_modules/@valkey/valkey-glide-linux-musl-x64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@valkey/valkey-glide-linux-musl-x64/-/valkey-glide-linux-musl-x64-1.1.0.tgz", + "integrity": "sha512-ljpgbfH124GeoFGIYzdoK5C8xsDCehm2U9RwYVJq2SAc5XyIyI80d7s0ZrjVAOhV77ebbVYn2i/j5bL/v/u/cw==", + "bundleDependencies": [ + "glide-rs" + ], + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "dependencies": { + "glide-rs": "file:rust-client", + "long": "^5.2.3", + "npmignore": "^0.3.1", + "protobufjs": "^7.4.0" + } + }, + "node_modules/@valkey/valkey-glide-linux-x64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@valkey/valkey-glide-linux-x64/-/valkey-glide-linux-x64-1.1.0.tgz", + "integrity": "sha512-TIvJxMTCRa551u6HHwvLsJjJ+RSi8V4FiSTMJ9GOa5WAlT07A3bSDbMzxF7JqfvfDFFRk4vO1B/k+1JE3SlV6A==", + "bundleDependencies": [ + "glide-rs" + ], + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "dependencies": { + "glide-rs": "file:rust-client", + "long": "^5.2.3", + "npmignore": "^0.3.1", + "protobufjs": "^7.4.0" + } + }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -285,6 +492,14 @@ } } }, + "node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "engines": { + "node": ">=8" + } + }, "node_modules/diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", @@ -327,6 +542,12 @@ "resolved": "https://registry.npmjs.org/http/-/http-0.0.1-security.tgz", "integrity": "sha512-RnDvP10Ty9FxqOtPZuxtebw1j4L/WiqNMDtuc1YMH1XQm5TgDRaR1G9u8upL6KD1bXHSp9eSXo/ED+8Q7FAr+g==" }, + "node_modules/long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", + "optional": true + }, "node_modules/make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", @@ -352,6 +573,15 @@ "node": ">= 0.6" } }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "optional": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -365,6 +595,24 @@ "node": ">= 0.6" } }, + "node_modules/npmignore": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/npmignore/-/npmignore-0.3.1.tgz", + "integrity": "sha512-bBDWyDhP/p7fFlAvKrN1gl/q0nsxkouezRBJmfzvJNHnWbRlC8j2xV9zteIkS9tlFuECgaV3nlJixQpJRe5EQg==", + "optional": true, + "dependencies": { + "minimist": "^1.2.8" + }, + "bin": { + "npmignore": "bin/npmignore" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -373,6 +621,30 @@ "node": ">=0.10.0" } }, + "node_modules/protobufjs": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.4.0.tgz", + "integrity": "sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==", + "hasInstallScript": true, + "optional": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/socket.io": { "version": "4.8.1", "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.1.tgz", diff --git a/quizRoom/package.json b/quizRoom/package.json index e45af6e..e7db991 100644 --- a/quizRoom/package.json +++ b/quizRoom/package.json @@ -17,6 +17,7 @@ "typescript": "^5.6.3" }, "dependencies": { + "@valkey/valkey-glide": "^1.1.0", "http": "^0.0.1-security", "socket.io": "^4.8.1" }