From 1d3aa1a3fe90e57e9b539f4e1929f0990ccddfbc Mon Sep 17 00:00:00 2001 From: vincentastolfi Date: Tue, 6 Aug 2024 17:42:07 +0200 Subject: [PATCH] :wrench: few updates for connexion reliability --- businesses/Player.js | 3 ++- database.js | 4 +++- index.js | 24 +++++++++++++++++++++--- public/scripts/app.js | 3 ++- 4 files changed, 28 insertions(+), 6 deletions(-) diff --git a/businesses/Player.js b/businesses/Player.js index b3ceac6..f16b838 100644 --- a/businesses/Player.js +++ b/businesses/Player.js @@ -3,8 +3,9 @@ const { Grid } = require("./Grid.js"); const { Piece } = require("./Piece.js"); class Player { - constructor(socketId) { + constructor(socketId, username) { this.id = socketId; + this.username = username this.grid = new Grid(); this.pieces = []; this.pieces.push(new Piece(1, { x: 0, y: 0 }, { x: 0, y: 0 })); diff --git a/database.js b/database.js index 9eea5de..23a4e33 100644 --- a/database.js +++ b/database.js @@ -1,12 +1,13 @@ const mysql = require("mysql"); -const connection = mysql.createConnection({ +const connection = mysql.createPool({ host: process.env.DB_HOST, user: process.env.DB_USER, password: process.env.DB_PASSWORD, database: process.env.DB_NAME }); +/* connection.connect((err) => { if (err) { console.error('Error connecting to the database:', err); @@ -14,5 +15,6 @@ connection.connect((err) => { } console.log('Connected to the MySQL database'); }); +*/ module.exports = connection; \ No newline at end of file diff --git a/index.js b/index.js index a71b682..db02723 100644 --- a/index.js +++ b/index.js @@ -52,7 +52,6 @@ app.post('/logIn', (req, res) => { console.error('Error inserting user into the database:', err); return res.status(500).send({message: 'Internal server error.'}); } - if (results.length === 1) { const token = jwt.sign({ pseudo }, secretKey, { expiresIn: '1h' }); res.cookie('authToken', token, { httpOnly: true, secure: false }); @@ -155,8 +154,21 @@ io.on("connection", (socket) => { }) socket.on("first connection", (socketId) => { - let player = new Player(socketId); - players.push(player); + const cookies = socket.request.headers.cookie; + const authToken = cookies.split('; ').find(cookie => cookie.startsWith('authToken=')).split('=')[1]; + + if (authToken) { + try { + const decoded = jwt.verify(authToken, secretKey); + const username = decoded.pseudo; + let player = new Player(socketId, username); + players.push(player); + } catch (ex) { + console.error('Invalid token:', ex); + } + } else { + console.log('No auth token found in cookies.'); + } }); socket.on("Hello", (callback) => { @@ -181,9 +193,15 @@ io.on("connection", (socket) => { room.addPlayer(players.find((p) => p.id === id)); room.validBoards(); + for (let i = 0; i < room.players.length; i++) { + io.to(room.players[i].id).emit("start game", room.players[i === 0 ? 1 : 0].username) + } + + /* room.players.forEach((player) => { io.to(player.id).emit("start game"); }); + */ askToPlay(room.start()); }); diff --git a/public/scripts/app.js b/public/scripts/app.js index c76c73e..8a1c8f2 100644 --- a/public/scripts/app.js +++ b/public/scripts/app.js @@ -17,10 +17,11 @@ function startConnection() { .addEventListener("click", onJoinRoom()); } -socket.on("start game", () => { +socket.on("start game", (username) => { const ennemyBoard = document.querySelector("#ennemy_board"); ennemyBoard.classList.remove("hidden-element"); + console.log(username) drawGrid(); drawEnnemyGrid();