连接android时socket.io向服务器发送一些数据

0 java sockets android node.js

在 javascript 和 node.js 中,我可以像这样连接时将数据发送到服务器

var s = io('http://216.157.91.131:8080/', { query: "foo=bar" });
s.connect();

var c = io.connect('http://216.157.91.131:8080/', { query: "foo=bar" });
Run Code Online (Sandbox Code Playgroud)

在服务器中我可以得到这样的数据

var io = require('socket.io')(server);

io.use(function(socket, next) {
  var handshakeData = socket.request;
  console.log("middleware:", handshakeData._query['foo']);

});
Run Code Online (Sandbox Code Playgroud)

现在在 android 中我如何做同样的事情?我使用

com.github.nkzawa:socket.io-client:0.4.2

对于 android 和它的代码是这样的

    IO.socket(host);
    } catch (URISyntaxException e) {
        e.printStackTrace();
    }  
    client.on("id", messageHandler.onId);

    client.connect();
Run Code Online (Sandbox Code Playgroud)

现在,如果我添加一些带有连接的数据,例如 javscript,它会向我显示错误

          JSONObject id = new JSONObject();
          id.put("user_id", 51);
          IO.socket(host,id);
Run Code Online (Sandbox Code Playgroud)

错误信息其

无法解析方法 'socket(java.lang.string,org.json.JSONObject)'

小智 5

我发现了懒惰

 IO.Options opts = new IO.Options();

opts.query = "auth_token=" + yourDataValue;
Socket socket = IO.socket("http://localhost", opts);
Run Code Online (Sandbox Code Playgroud)

你可以通过

var io = require('socket.io')(server);

io.use(function(socket, next) {
  var handshakeData = socket.request;

  var data = handshakeData._query['auth_token'];
});
Run Code Online (Sandbox Code Playgroud)