Простой пример 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());
    }
});
Другие вопросы по тегам