2016-03-27 2 views
0

Hier ist meine Verbindungsfunktion, wo ich den Socket zu SOCKET_LIST global hinzufügen, so dass ich es später durchlaufen kann.Versucht, nur zu einem Raum in socket.io zu emittieren, aber es sendet an alle mit dem Server verbunden

Player.onConnect führt eine Initialisierung durch, bei der ein neuer Raum erstellt wird, wenn keiner offen ist, oder einer, wenn jemand auf einen Teilnehmer wartet.

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


    SOCKET_LIST[socket.id] = socket; 

    Player.onConnect(socket); 

}); 

dann ist dies, wenn ich versuche, alle im selben Raum die Daten an Benutzer emittierenden .. aber anstatt nur die Daten für die Menschen in den Raum emittiert es windet sich Daten zu jeder emittierenden mit dem Server verbunden.

setInterval(function(){ 
    var pack = { 
     player:Player.update(), 
     platform:Platform.update() 
    } 
    for (var i in SOCKET_LIST) { 
     var socket = SOCKET_LIST[i]; 
     io.sockets.in(socket.room).emit('newPositions', pack); 
    } 

}, 30); 

Als ich console.log die Zimmer-IDs vom Server aus es entsprechend funktioniert, wie ich von 2 Kunden kommen werden und dann wird der dritte einen neuen Raum-ID trösten, und dann die fünfte ein, usw. Da das Spiel ein 2-Spieler-Spiel sein soll und ein neuer Raum entsteht, wenn jemand anderes versucht, einem Spiel beizutreten.

Antwort

0

Loops über Ihre SOCKET_LIST und erhält alle Sockets, weshalb der Server an alle sendet.

Verwandte Themen