🔧 few updates for connexion reliability

docker-deployment
Vincent ASTOLFI 9 months ago
parent ce34fa94dc
commit 1d3aa1a3fe

@ -3,8 +3,9 @@ const { Grid } = require("./Grid.js");
const { Piece } = require("./Piece.js"); const { Piece } = require("./Piece.js");
class Player { class Player {
constructor(socketId) { constructor(socketId, username) {
this.id = socketId; this.id = socketId;
this.username = username
this.grid = new Grid(); this.grid = new Grid();
this.pieces = []; this.pieces = [];
this.pieces.push(new Piece(1, { x: 0, y: 0 }, { x: 0, y: 0 })); this.pieces.push(new Piece(1, { x: 0, y: 0 }, { x: 0, y: 0 }));

@ -1,12 +1,13 @@
const mysql = require("mysql"); const mysql = require("mysql");
const connection = mysql.createConnection({ const connection = mysql.createPool({
host: process.env.DB_HOST, host: process.env.DB_HOST,
user: process.env.DB_USER, user: process.env.DB_USER,
password: process.env.DB_PASSWORD, password: process.env.DB_PASSWORD,
database: process.env.DB_NAME database: process.env.DB_NAME
}); });
/*
connection.connect((err) => { connection.connect((err) => {
if (err) { if (err) {
console.error('Error connecting to the database:', err); console.error('Error connecting to the database:', err);
@ -14,5 +15,6 @@ connection.connect((err) => {
} }
console.log('Connected to the MySQL database'); console.log('Connected to the MySQL database');
}); });
*/
module.exports = connection; module.exports = connection;

@ -52,7 +52,6 @@ app.post('/logIn', (req, res) => {
console.error('Error inserting user into the database:', err); console.error('Error inserting user into the database:', err);
return res.status(500).send({message: 'Internal server error.'}); return res.status(500).send({message: 'Internal server error.'});
} }
if (results.length === 1) { if (results.length === 1) {
const token = jwt.sign({ pseudo }, secretKey, { expiresIn: '1h' }); const token = jwt.sign({ pseudo }, secretKey, { expiresIn: '1h' });
res.cookie('authToken', token, { httpOnly: true, secure: false }); res.cookie('authToken', token, { httpOnly: true, secure: false });
@ -155,8 +154,21 @@ io.on("connection", (socket) => {
}) })
socket.on("first connection", (socketId) => { socket.on("first connection", (socketId) => {
let player = new Player(socketId); const cookies = socket.request.headers.cookie;
players.push(player); 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) => { socket.on("Hello", (callback) => {
@ -181,9 +193,15 @@ io.on("connection", (socket) => {
room.addPlayer(players.find((p) => p.id === id)); room.addPlayer(players.find((p) => p.id === id));
room.validBoards(); 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) => { room.players.forEach((player) => {
io.to(player.id).emit("start game"); io.to(player.id).emit("start game");
}); });
*/
askToPlay(room.start()); askToPlay(room.start());
}); });

@ -17,10 +17,11 @@ function startConnection() {
.addEventListener("click", onJoinRoom()); .addEventListener("click", onJoinRoom());
} }
socket.on("start game", () => { socket.on("start game", (username) => {
const ennemyBoard = document.querySelector("#ennemy_board"); const ennemyBoard = document.querySelector("#ennemy_board");
ennemyBoard.classList.remove("hidden-element"); ennemyBoard.classList.remove("hidden-element");
console.log(username)
drawGrid(); drawGrid();
drawEnnemyGrid(); drawEnnemyGrid();

Loading…
Cancel
Save