Простой пример Sails.js и Android
Я действительно борюсь с открытием сокета, используя sails.io и Android. На данный момент я пытаюсь добиться того, чтобы просто напечатать сокет в консоли сервера sails.js.
Сторона Android:
Я использую библиотеку socket.io.client от nkzwa (скомпилируйте 'com.github.nkzawa:socket.io-client:0.4.2')
Это код, который я использую в Android внутри AsyncTask:
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.
Кто-нибудь может увидеть, что я делаю не так?
3 ответа
Я получил это работает так:
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
и получить ответ использовать ack
в emit
метод.
Если вы обнаружили ошибку 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());
}
});