From de00a4fdcd28b6be7a157103f5ce6b3075a89733 Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Tue, 20 Dec 2022 16:49:01 +0100 Subject: [PATCH] last update before merge with Cherif --- memo.txt | 47 +++++++++++++++++++ .../game_back/src/server/wsServer.ts | 45 ++++++++++++------ 2 files changed, 77 insertions(+), 15 deletions(-) create mode 100644 memo.txt diff --git a/memo.txt b/memo.txt new file mode 100644 index 00000000..b9730741 --- /dev/null +++ b/memo.txt @@ -0,0 +1,47 @@ +DONE : + + +TODO : + routes gameServer -> Nest : + - validation + - creation de partie + - fin de partie + - mode spectateur + - quelques routes cote serveur + - une interface cote front (liste des matchs en cours) + - etat du client (en ligne, en jeu, ...) + - le chat + +-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- +"Bonus" : + - HTTPS + - mettre le site en ligne +-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- +BUG : + - Bug de son étonnant dans le front, ça pop une fois de temps en temps : + Uncaught (in promise) DOMException: The element has no supported sources. +-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- + +- Comment fonctionne .env ? Comment faire pour ne pas le push sur le depot ? + +- certains status 200 pourrait peut-être être du 204 ? + (exemple dans TwoFactorAuthentication.svelte) + +A la place de : +``` + if (response.status === 401) { + // Wrong + } + if (response.status === 200) { + // Ok + } +``` +On pourrait mettre : +``` + if (!response.ok) { + // Wrong + } + else { + // Ok + } +``` diff --git a/srcs/requirements/game_server/game_back/src/server/wsServer.ts b/srcs/requirements/game_server/game_back/src/server/wsServer.ts index 4554046c..0001b002 100644 --- a/srcs/requirements/game_server/game_back/src/server/wsServer.ts +++ b/srcs/requirements/game_server/game_back/src/server/wsServer.ts @@ -191,7 +191,7 @@ function privateMatchmaking(player: ClientPlayer) } -async function createGameSession(playersArr: ClientPlayer[], matchOptions: en.MatchOptions) +function createGameSession(playersArr: ClientPlayer[], matchOptions: en.MatchOptions) { // const id = gameSessionIdPLACEHOLDER; // Force ID, TESTING SPECTATOR const id = uuidv4(); @@ -227,22 +227,10 @@ async function createGameSession(playersArr: ClientPlayer[], matchOptions: en.Ma }); } }, 5000); - - /* // WIP nest , send gameSession.id - await fetch(c.addressBackEnd + "/game/newGameSession", - { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify({ - id: id, - }) - }); */ } -function playerReadyConfirmationListener(this: WebSocket, data: string) +async function playerReadyConfirmationListener(this: WebSocket, data: string) { try { const msg : ev.ClientEvent = JSON.parse(data); @@ -251,7 +239,34 @@ function playerReadyConfirmationListener(this: WebSocket, data: string) const client = clientsMap.get(this.id); const gameSession = client.gameSession; gameSession.unreadyPlayersMap.delete(this.id); - if (gameSession.unreadyPlayersMap.size === 0) { + if (gameSession.unreadyPlayersMap.size === 0) + { + // WIP nest , send gameSession.id + const gameSessionPlayersIterator = gameSession.playersMap.values(); + const response = await fetch(c.addressBackEnd + "/game/newGameSession", + { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + id: gameSession.id, + gameOptions: gameSession.matchOptions, + playerOneUsername: (gameSessionPlayersIterator.next().value).username, + playerTwoUsername: (gameSessionPlayersIterator.next().value).username, + }) + }); + if (!response.ok) + { + gameSessionsMap.delete(gameSession.id); + gameSession.playersMap.forEach((client) => { + client.socket.send(JSON.stringify( new ev.ServerEvent(en.EventTypes.matchAbort) )); + client.gameSession = null; + clientTerminate(client); + }); + return; + } + gameSession.playersMap.forEach( (client) => { client.socket.send(JSON.stringify( new ev.ServerEvent(en.EventTypes.matchStart) )); });