簡體   English   中英

如何通過socket.io發送帶有參數的POST/GET或在Android中通過socket.io調用feathersjs服務?

[英]How can to send POST/GET with params via socket.io or call a feathersjs service via socket.io in Android?

我剛剛使用完在我的NodeJS應用feathersjs 現在我在 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("join", "some data"); 但我想通過帶有參數的套接字調用 REST Api 例如:Android 中的http://10.0.130.32:3030/getID

我怎樣才能做到這一點?

使用 Feathers,您可以從 REST 或 Sockets 訪問所有服務方法(find/get/create/etc)。

來自文檔: https : //docs.feathersjs.com/clients/vanilla-socket-io.html

調用服務方法

可以通過發出帶有方法參數的<servicepath>::<methodname>事件來調用服務方法。 servicepath 是服務注冊的名稱(在 app.use 中),不帶前導或尾隨斜杠。 將使用方法調用的結果或可能發生的任何錯誤調用遵循 function(error, data) 節點約定的可選回調。

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應用程序的根目錄: 10.0.130.32:3030 : 10.0.130.32:3030

在 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");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM