我刚刚使用feathersjs在NodeJs中完成了我的应用程序。现在我在android上编写应用程序,通过节点端与我的服务进行通信。如何通过android socket与find / get / create / update等节点服务进行通信?
以下是我的代码段:
try {
mSocket = IO.socket("http://10.0.130.32:3030");
} catch (URISyntaxException e) {
e.printStackTrace();
}
mSocket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {
@Override
public void call(Object... args) {
// socket.emit("foo", "hi");
// socket.disconnect();
}
}).on("config", new Emitter.Listener() {
/*
* Android joins to a room after receiving socket's id from another user
*/
@Override
public void call(Object... args) {
try {
JSONObject object = new JSONObject(args[0].toString());
mSocket.emit("join", object.get("socket"));
id = object.getString("socket");
} catch (JSONException e) {
e.printStackTrace();
}
}
}).on(Socket.EVENT_DISCONNECT, new Emitter.Listener() {
@Override
public void call(Object... args) {}
});
mSocket.connect();
我知道你可以使用:mSocket.emit("加入","一些数据");但是我想在REST中调用一个REST Api:http://10.0.130.32:3030/getID在Android中通过套接字使用params。
我该怎么做?
答案 0 :(得分:1)
使用Feathers,您可以从REST或套接字访问所有服务方法(find / get / create / etc)。
来自文档:https://docs.feathersjs.com/clients/vanilla-socket-io.html
调用服务方法
可以通过使用方法参数发出
<servicepath>::<methodname>
事件来调用服务方法。 servicepath是服务已注册的名称(在app.use中),没有前导或尾部斜杠。函数(错误,数据)之后的可选回调将使用方法调用的结果或可能发生的任何错误调用节点约定。params将在服务方法调用中设置为params.query。其他服务参数可以通过Socket.io中间件设置。
你可以在那个页面上找到很多例子,但是作为一个想法:
socket.emit('messages::find', { status: 'read', user: 10 }, (error, data) => {
console.log('Found all messages', data);
});
请注意,您需要socket
指向您的羽毛应用的根目录:10.0.130.32:3030
答案 1 :(得分:0)
在Android for REST Api调用中,我们使用HttpURLConnection。 例如对于GET:
String url = "http://10.0.130.32:3030/getID";
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");