Java Websocket Emit数组

时间:2014-02-02 18:31:24

标签: java android node.js websocket socket.io

我在JAVA中通过socket.io发送JSONArray时遇到了问题。

使用下面的功能,我试图用他的用户名和令牌授权用户。

public static void authorize()
    {
        HashMap<String, String> user = Database.getUser();

        JSONArray req = new JSONArray();

        try {
            JSONObject reqObj = new JSONObject();
            reqObj.put("username", user.get("username"));
            req.put( reqObj );
            reqObj = new JSONObject();
            reqObj.put("usertoken", user.get("usertoken"));
            req.put( reqObj );
        } catch (JSONException e) {
            e.printStackTrace();
        }

        Log.d("WebsocketFunctions", "Authorize: " + req.toString());
        Socket.emit("authorize", req);
    }

这是Log.d(“WebsocketFunctions”)输出:

  

授权:[{“username”:“admin”},{“usertoken”:“45345980983450983”}]

但是在我的节点服务器上我只得到:

  

debug - websocket writing 1 :: {username:'admin'}

我需要的不仅是用户名,还有usertoken。不知何故,usertoken不会发送到服务器。

这是我的节点授权功能:

authorize: function(socket, data)
        {
            console.log('Authorize');
            console.log(data);
        },

1 个答案:

答案 0 :(得分:1)

我不知道问题出在哪里但我确定的一件事就是你可以在没有JSONArray的情况下做到这一点。我这样做,这有效:

JSONObject obj = new JSONObject();
obj.putOpt("username", user.get("username"));
obj.putOpt("usertoken", user.get("usertoken"));
socket.emit("authorize", obj);

如果您要发送intdouble,请使用以下内容:

obj.put("key", value);

您可以通过以下方式在socket.io服务器中访问它:

socket.on("authorize", function(data) {
   var user = data.username;
   var token = data.usertoken;
})