简单的Sails.js和Android示例

简单的Sails.js和Android示例,android,node.js,sockets,sails.js,Android,Node.js,Sockets,Sails.js,我真的很难用sails.io和android打开套接字连接。我目前试图实现的只是在sails.js服务器的控制台中打印socketid 安卓端: 我正在使用nkzwa的socket.io.client库 (编译'com.github.nkzawa:socket.io客户端:0.4.2') 这是我在android中异步任务中使用的代码: private Socket mSocket; { try { mSocket = IO.socket("http

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

安卓端:

我正在使用nkzwa的socket.io.client库 (编译'com.github.nkzawa:socket.io客户端:0.4.2')

这是我在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);
    }
}
 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();
在运行该任务时,我认为可以在我的sails实例中输出控制台日志


有人能看到我做错了什么吗?

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

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

我让它这样工作:

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

我让它像这样工作:

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);
    }
}
 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作为
事件
,要获得响应,请使用
emit
方法中的
ack

如果发现以下错误
错误(SAILS:HOOK:SOCKETS:PARSE_VIRTUAL_REQ)::未能解析传入的socket.io请求
更改
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());
    }
});

要发出请求,请使用url作为
事件
,要获得响应,请使用
emit
方法中的
ack

如果发现以下错误
错误(SAILS:HOOK:SOCKETS:PARSE_VIRTUAL_REQ)::未能解析传入的socket.io请求
更改
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());
    }
});

在这里提问之前,请始终打开“到处调试”并附加日志。这两个控制台都有什么功能?(节点控制台和adb logcat)节点控制台是空的,android没有任何相关功能。在这里提问之前,请始终在任何地方打开调试并附加日志。这两个控制台都有什么功能?(节点控制台和adb logcat)节点控制台为空,android与此无关。我可以帮助您使用sails套接字,但我没有android方面的经验来帮助您。我可以帮助您使用sails套接字,但我没有android方面的经验来帮助您。如何使用此代码获得URL JSON输出?对于此实例,服务器没有JSON回复。为此,您遵循类似的模式,但添加了一个用于返回数据的处理程序,比如mSocket.on(“myurl”,onDataReceived);然后private Emitter.Listener onDataReceived=new Emitter.Listener(){@Override public void调用(最终对象…args){}谢谢!关于此代码,我还有另一个问题。^^我的web套接字只有在用户已连接的情况下才能工作。因此,我如何更改头以保持套接字和http web服务之间的会话?对此不确定,最好问一个新问题。如何使用此代码获得URL JSON输出?对于此实例,没有JSON从服务器回复。为此,您遵循类似的模式,但添加一个用于返回数据的处理程序,如mSocket.on(“myurl”,onDataReceived);然后是private Emitter.Listener onDataReceived=new Emitter.Listener(){@Override public void call(final Object…args){}谢谢!关于此代码,我还有另一个问题。^^我的web套接字只有在用户已连接的情况下才能工作。因此,我如何更改标头以保持套接字和http web服务之间的会话?不确定,可能最好问一个新问题。为我节省了一天!为我节省了一天!