简单的Sails.js和Android示例

时间:2015-04-15 12:35:37

标签: android node.js sockets sails.js

我真的很想用sails.io和android打开套接字连接。我现在想要实现的只是在sails.js服务器的控制台中打印socketid。

Android Side:

我正在使用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实例中输出控制台日志。

谁能看到我做错了什么?

3 个答案:

答案 0 :(得分:6)

我得到了这样的工作:

 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();

答案 1 :(得分:1)

您可以先尝试创建一个节点客户端并尝试连接套接字吗?我不确定你是否确定帆中的服务器端是否正常工作。我对吗?

答案 2 :(得分:1)

要发出请求,请将该网址用作event,并在ack方法中使用emit获取回复。

如果您发现跟随错误Error (SAILS:HOOK:SOCKETS:PARSE_VIRTUAL_REQ):: Failed to parse incoming socket.io requesthttp://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());
    }
});