这是我基于Android代码(libgdx)的客户端-

   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");
    }
}


这是我在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);

    }

});


我在命令窗口中收到的错误是-“ TypeError:无法读取Socket中未定义的属性'roomName'。

你能告诉我如何解决这个问题吗?我的目标是从客户那里获得房间名称,这样我就可以让他们加入该特定房间!

我对于在平台不同,客户端是Java而服务器是js时如何实现这一点感到困惑。

最佳答案

您只在检查roomName是否为null,使用javascript的事情是它具有多个类似null的类型。 undefined是其中之一,即将roomName设置为的内容,而未定义roomName。您只检查它是否为null,不是。它是未定义的。

您在顶部创建roomName属性,但从未分配任何内容,因此未定义。将您的if语句更改为此:

// This will return false if roomName is null, undefined or 0.
if(!roomName) {
    // your code
}

// or alternatively, change the assignment of roomName to
roomName = null;


但是我建议在尝试使用之前给roomName分配一些东西。

09-30 11:09