繁体   English   中英

Java Websocket发射数组

[英]Java Websocket Emit Array

我在通过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”}]

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

调试-websocket编写1 :: {username:'admin'}

我需要的不仅是用户名,还包括用户令牌。 某种程度上,用户令牌没有发送到服务器。

这是我的节点授权功能:

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

我不知道问题出在哪里,但我可以确定的一件事是,无需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;
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM