Socket.io создает один объект каждые 2 подключения - PullRequest
0 голосов
/ 02 декабря 2018

Я пытаюсь создать игру, в которой каждые 2 соединения socket.io объединяются в одну "игру" / комнату.Мне удалось поместить два соединения в одну комнату, но я также хочу иметь один игровой объект для этих двух соединений.Но мой код создает два по одному для каждого соединения в основном.

//My Class     
class Game {
  constructor() {
    this.players = [];
    this.nextPlayer = [];

  }
  //...My Methods go here 
}

Это та часть, которая дала мне проблемы.

io.on('connection', function (socket) {

  //Puts every 2 connections into 1 room together
  if (io.nsps['/'].adapter.rooms["room-" + roomno] && io.nsps['/'].adapter.rooms["room-" + roomno].length > 1) roomno++;
  socket.join("room-" + roomno);
  io.sockets.in("room-"+roomno).emit('connectedToRoom', "You are in room no. "+roomno);

  if (io.nsps["/"].adapter.rooms["room-1"].length === 2) {
    //I think the problem is here it creates a new Game() for every connection
    //I would like to have only one game object for every 2 connections
    let game = new Game();
    game.players = Object.keys(io.nsps["/"].adapter.rooms["room-1"].sockets);
    game.nextPlayer = Object.keys(io.nsps["/"].adapter.rooms["room-1"].sockets)[0];

    socket.on("fieldMarked", (data) => {
      //This is different based on which client sent the "fieldMarked"
      console.log(game.nextPlayer);
    })
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...