简单的Sails.js和Android示例
我真的很难用sails.io和android打开套接字连接。 我现在想要实现的只是在sails.js服务器的控制台中打印socketid。
Android端:
我正在使用nkzwa的socket.io.client库(编译'com.github.nkzawa:socket.io-client:0.4.2')
这是我在AsyncTask中使用的android代码:
private Socket mSocket; { try { mSocket = IO.socket("http://192.168.0.80:3000/batches/"); } catch (URISyntaxException e) {} } @Override protected Void doInBackground(Void... params) { mSocket.connect(); mSocket.emit("getSocketID"); }
和我的批处理控制器看起来像这样:
module.exports = { getSocketID: function(req, res) { if (!req.isSocket) return res.badRequest(); var socketId = sails.sockets.id(req.socket); // => "BetX2G-2889Bg22xi-jy" console.log(socketId) return res.ok('My socket ID is: ' + socketId); } }
当我运行这个任务时,我想我会得到在我的sails实例中输出的控制台日志。
任何人都可以看到我做错了什么?
我得到了这样的工作:
private Socket mSocket; { try { mSocket = IO.socket("http://192.168.0.80:3000"); } catch (URISyntaxException e) { throw new RuntimeException(e); } } JSONObject obj1 = new JSONObject(); try { obj1.put("url","/batches/getSocketID"); } catch (JSONException e) { e.printStackTrace(); } mSocket.emit("get",obj1); mSocket.connect();
你可以尝试先创build一个节点客户端,并尝试连接套接字? 我不确定你是否确定sails中的服务器端是正常工作的。 我对吗?
要发出请求,请使用url作为event
并在emit
方法中使用ack
获取响应。
如果发现followig错误Error (SAILS:HOOK:SOCKETS:PARSE_VIRTUAL_REQ):: Failed to parse incoming socket.io request
更改http://192.168.11.111:1337
到http://192.168.11.111:1337?__sails_io_sdk_version=0.13.5
private Socket mSocket; { try { mSocket = IO.socket("http://192.168.0.80:3000"); } catch (URISyntaxException e) { throw new RuntimeException(e); } } JSONObject jsonObject = new JSONObject(); try { jsonObject.put("url", "/records"); } catch (JSONException e) { e.printStackTrace(); } mSocket.emit("get", jsonObject, new Ack() { @Override public void call(Object... args) { Log.d(TAG, "records: " + args[0].toString()); } });