Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

Je cherche à faire un tableau de cette forme pour mon serveur socket.io:
[Nom du lobby]:
-Objet joueur 1
-Objet joueur 2
-Objet joueur 3
[Nom du lobby 2]:
-Objet joueur 1
-Objet joueur 2
-Objet joueur 3

function LobbyPlayer(pseudo,mdp) {
  this.pseudo = pseudo;
  this.mdp = mdp;
}
 nsp.on('connect', function(socket) {
          if(lobby.indexOf(arrayserv[0]) == -1) { //Si le lobby n'est pas répertorié, je l'ajoute
            lobby.push(new Array(arrayserv[0]));
          }
          console.log(lobby);
          np = new LobbyPlayer(socket.handshake.query.pseudo,socket.handshake.query.mdp); //Je fais un objet du nouveau joueur
          console.log(np);
          lobby[lobby.indexOf(arrayserv[0])].push(np); //Je l'ajoute
          console.log(lobby);

Ce que je veux

Je cherche donc à trouver la bonne méthode pour faire ça, étant donné que je souhaite pouvoir acceder à n'importe quel joueur selon le lobby

Ce que j'obtiens

J'obtiens l'erreur:
lobby[lobby.indexOf(arrayserv[0])].push(np);
^

TypeError: Cannot read property 'push' of undefined
at DynamicNamespace.<anonymous> (C:\Users\Megaport\Documents\Unreal Projects\MainGame\Server\server.js:51:46)
at emitOne (events.js:116:13)
at DynamicNamespace.emit (events.js:211:7)
at DynamicNamespace.Namespace.emit (C:\Users\Megaport\Documents\Unreal Projects\MainGame\Server\node_modules\dynamic.io\node_modules\socket.io\lib\namespace.js:205:10)
at C:\Users\Megaport\Documents\Unreal Projects\MainGame\Server\node_modules\dynamic.io\node_modules\socket.io\lib\namespace.js:171:14
at _combinedTickCallback (internal/process/next_tick.js:131:7)
at process._tickCallback (internal/process/next_tick.js:180:9)

Merci pour vos eventuels aides :)

1 réponse


L'erreur te dit TypeError: Cannot read property 'push' of undefined cette methode appartient au array [] si tu utilise objet JSON {} ca me marchera pas, biz