2016-04-19 17 views
4

folgende Code ist für Socket.io Server in node.jsJavascript: Wie Array-Werte hinzufügen, um Objekteigenschaft

var app = require('express')(); 
var http = require('http').Server(app); 
var io = require('socket.io')(http); 
var clients=[]; 
var gamename={}; 

io.on('connection', function(socket){ 
    socket.on('game', function(data){ 
    gamename[data.gamename]=data.number; //problem is here 
    }); 
}); 

gamename = Name des Spiels; Nummer = Benutzer-ID;

  1. kann es mehr Anzahl von Spielen geben;
  2. kann es pro Spiel mehr Anzahl der Benutzer sein

und ich bin emittierende Spielereignis in der Client-Seite mit einigen Daten (includeing gamename, und Nummer), wenn eine Verbindung mit dem Server hergestellt wird. Wenn also ein neuer Client eine Verbindung zum Server herstellt, wird das Spielereignis auf dem Server ausgelöst. Im Spielereignis auf der Serverseite möchte ich "number" auf die Objekteigenschaft gamename (variable) drücken.

Beispiel:

var games={}; 

, wenn es eine Verbindung zum Beispiel für das Spiel Poker mit Benutzer-ID 34 I var gamename = 'Poker' tun will;

gamename[gamename] -> I want this automatically created as array, or anything, but I want to push user id's. 

sollte das resultierende Objekt sein.

games={'poker' : [34]}; 

Wenn ich noch einen Benutzer für Poker verbindet mit Benutzer-ID 45,

games={'poker' : [34, 45]}; 

und wenn aa Benutzer eine Verbindung zum Spiel Cricket mit Benutzer 67

games={'poker' : [34, 45],'cricket' : [67]}; 

Initial Objekt

games={}; 

nach einigen connectio ns

games={'poker' : [34, 45],'cricket' : [67]}; 

(es kann n Anzahl der Verbindungen sein) Wenn meine Frage nicht klar ist, ich es im Detail erklären, wenn jemand fragt. Vielen Dank im Voraus

Antwort

5

So:

var app = require('express')(); 
var http = require('http').Server(app); 
var io = require('socket.io')(http); 
var clients=[]; 
var gamename={}; 

io.on('connection', function(socket){ 
    socket.on('game', function(data){ 
    gamename[data.gamename] = gamename[data.gamename] || []; 
    gamename[data.gamename].push(data.number); //no more problem 
    }); 
}); 
+0

Danke, aber könnten Sie bitte erklären, was diese Zeile tut gamename [data.gamename] = gamename [data.gamename] || []; Ich bin neu in Javascript – scriptkiddie

+0

Es initialisiert den Spielnamen [data.gamesame] zu einem leeren Array, wenn es nicht bereits initialisiert ist. –

+0

großer Bruder, danke. – scriptkiddie

Verwandte Themen