Я пытаюсь создать игру, в которой каждые 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);
})
}
});