Bonsoir,

Je cherche pour un jeu à faire des rooms dynamiques, en effet, je souhaite pour chaque parties faire une room, de la forme par exemple "game-[ID de la partie]".

Chaque room ce type commençeraient alors par "game-", avec le même code.

Le problème étant que je ne sais pas et je n'ai pas trouvé comment faire.

Merci d'avance pour votre aide

1 réponse


Salut,
Pour créer des rooms dynamiquement il faut le faire du côté client.
Tu peux par exemple imaginer que le code ci-dessous est appelé lors du lancement d'une nouvelle game.

const socket = io.connect();
game.on('start', (gameID) => {
  socket.emit('start', { name: `game-${gameID}`, player: 'Player1' });
});

Après j'imagine que tu as besoin d'envoyer des informations depuis ton back, tu peux imagnier cette solution:

const games = {};
const players = {};
io.sockets.on('connection', (socket) => {
  socket.on('start', ({ name, player }) => {
    if (!games[name]) games[name] = {};
    games[name][id] = socket.to(socket.id);
    games[name].join(name, () => {

      // Si tu veux envoyer un message à une connection particulière (de manière privé)
      socket.to(id).emit('nbPlayer', Object.key(games[name]).length - 1);

      // Si tu envoyer un message à toute la room
      socket.to(name).emit('srvMsg', 'Ready ?');
    });
  });
});

Cet exemple n'est pas complet mais j'espère qu'il te permettra d'avoir un point de départ.