Es dauerte eine Weile, um herauszufinden, was das Problem war, aber ich frage mich, warum es so verhält.deklarieren Variable mit dem gleichen Namen verursacht Probleme in der Steckdose io
Mit diesem Code werden die Variablen Player, Player und Socket nicht definiert, was zu Fehlern führt.
var player = Player(socket.id, socket);
socket.on('joinHost', function(data) {
var gameID = data;
player.gameID=gameID;
var game = GAME_LIST[gameID];
game.players[socket.id]=player;
var players = game.players;
for (var p in players){
var player = players[p];
var socket = player.socket;
socket.emit('playerJoined');
}
});
Durch die Vermeidung der Deklarationen von Variablen mit demselben Namen wird alles korrekt ausgeführt.
var player = Player(socket.id, socket);
socket.on('joinHost', function(data) {
var gameID = data;
player.gameID=gameID;
var game = GAME_LIST[gameID];
game.players[socket.id]=player;
var tempPlayers = game.players;
for (var p in tempPlayers){
var tempPlayer = tempPlayers[p];
var tempSocket = tempPlayer.socket;
tempSocket.emit('playerJoined');
}
});
Der interessante Teil ist, wenn ich den ersten Code lief, es sagt der Spieler in der Linie player.gameID=gameID
nicht definiert ist, während, wenn ich den Code entfernt, die nach player.gameID=gameID
ist, wurde der Spieler festgelegt. Grundsätzlich hat der Code nach player.gameID=gameID
dazu geführt, dass der Player nicht definiert war.
Also, warum passiert das?
Umm, ist Spieler einen Konstruktor? Wenn ja, versuche 'var player = neuer Player (socket.id, socket);' – magreenberg