I am doing a proyect of a game in javascript native with node.js and express and I have a question, I have done the code but sometimes work and others not becuase there seems to be an issue with the socket.id but I don’t understand how to fix it.
Client
if (!turnEmitted) {
socket.emit('turn', { gameID: gameID });
localStorage.setItem(`turnEmitted_${gameID}`, 'true');
}
socket.on('getCurrentPlayer', (currentPlayer) => {
console.log(currentPlayer)
console.log(socket.id)
currentPlayerFront = currentPlayer.name;
localStorage.setItem('currentPlayer', currentPlayerFront);
if (currentPlayer.id === socket.id) {
socket.emit('sendCurrentPlayer', {player: currentPlayerFront, gameID: gameID})
questionsZone.style.pointerEvents = 'auto';
diceButton.disabled = false;
}
});
socket.on('sendCurrentPlayer', (currentPlayer) => {
playerTurn(currentPlayer)
})
Server
socket.on('turn', async (data) => {
const game = await Game.findOne({ gameID: data.gameID })
if (game && game.start) {
if (game.players.length != 0) {
game.turn = Math.floor(Math.random() * game.players.length)
await game.save()
console.log('turno: ' , game.turn)
let currentPlayer = {id: socket.id, name: game.players[game.turn].name}
console.log('Es el turno de:', currentPlayer.name);
io.emit('getCurrentPlayer', currentPlayer)
}
}
})
socket.on('sendCurrentPlayer', (data) => {
io.emit('sendCurrentPlayer', data.player)
})
The turn system works as expected