2016-04-30 6 views
1

Hier ist meine Client-Seite basiert auf dem Android-Code (Libgdx) -Wie analysiere ich String-Daten von einem JSON-Objekt, das an einen js-Server übergeben wird?

public static void updateTheServer() { 
    JSONObject data = new JSONObject(); 
    try { 
     data.put("roomName", tf.getText()); //tf is a textbox i take input from 
     socket.emit("joinRoom",data); 
    } catch (JSONException e) { 
     Gdx.app.log("SOCKET.IO", "Error sending room name data"); 
    } 
} 

hier mein Server-Code ist auf Javascript/nodejs-

  var clientInfo={}; //key-Value Pairs 
     var roomName; 
    io.on('connection', function (socket){ 
    socket.emit('socketID',{id:socket.id}); 
    socket.on('joinRoom',function(data){ 
      data.id=socket.id; 
      console.log("Got room name!"); 
      if(!roomName===null){ 
      roomName=data.JSON.parse(roomName); 
      clientInfo[socket.id]=roomName; 
      socket.join(roomName); 

    } 

}); 

Der Fehler, den ich im Befehlsfenster is- bekommen " Typeerror:. kann nicht lesen Eigentum ‚Raumnamen‘ undefinierten bei Sockel

können Sie mir sagen, wie dieses Problem zu lösen Mein Ziel ist es, die Klienten zu erhalten Raumnamen bilden, so kann ich sie, dass bestimmte Zimmer macht beitreten

?!

Ich bin verwirrt, wie man dies erreichen kann, wenn die Plattformen unterschiedlich sind, Client ist Java und Server ist js.

Antwort

0

Sie überprüfen nur, ob roomName null ist, die Sache mit Javascript ist, dass es mehrere Null-ähnliche Typen hat. Undefiniert ist einer davon. RoomName ist nicht definiert. Sie überprüfen nur, ob es null ist, was es nicht ist. Es ist undefiniert.

Sie erstellen die roomName -Eigenschaft an der Spitze, aber Sie zuweisen nie etwas, so dass es nicht definiert ist. Ändern Sie Ihre if-Anweisung wie folgt:

Aber ich empfehle, etwas zu RoomName zuzuweisen, bevor Sie versuchen, es zu verwenden.

+0

Danke, ich denke, dass ein Teil des Problems jetzt gelöst ist! Vielen Dank – SupraDaBoss

Verwandte Themen