简单的 Sails.js 和 Android 示例
Simple Sails.js and Android Example
我真的很难使用 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");
}
我的 batchescontroller 看起来像这样:
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 实例中输出控制台日志。
谁能看出我做错了什么?
能否先尝试创建一个节点客户端,然后尝试连接套接字?我不确定您是否确定 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();
要发出请求,请使用 url 作为 event
并在 emit
方法中使用 ack
获得响应。
如果您发现以下错误 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());
}
});
我真的很难使用 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");
}
我的 batchescontroller 看起来像这样:
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 实例中输出控制台日志。
谁能看出我做错了什么?
能否先尝试创建一个节点客户端,然后尝试连接套接字?我不确定您是否确定 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();
要发出请求,请使用 url 作为 event
并在 emit
方法中使用 ack
获得响应。
如果您发现以下错误 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());
}
});