簡體   English   中英

將函數作為參數從 Java 傳遞到 socket.io 服務器

[英]Passing function as parameter from Java to socket.io server

在 javascript 中,您可以在客戶端執行以下操作:

socket.emit('get country', function(country) {
    console.log(country);
});

服務器端在哪里:

socket.on('get country', function(fn) {
    fn(country);
});

這將導致從客戶端的服務器記錄“國家”的值。

在 android/Java 中,如果您在客戶端執行以下操作:

interface MyCallbackInterface {
    void getCountry(String country);
}


socket.emit("get country", new MyCallbackInterface() {
    @Override
    public void getCountry(String country) {
        Log.i("log", country);
    }
});

服務器端仍然在哪里:

socket.on('get country', function(fn) {
    fn(country);
});

你得到一個錯誤:“TypeError:字符串不是一個函數。” 在服務器端調試 fn 的值時,我得到如下字符串:com.abc.abc.criteria$2@20cb82cd,其中 com.abc.abc.criteria 是具有 Java 客戶端的活動的完全限定名稱代碼。

是否可以將回調函數作為參數從 Java 傳遞到 socket.io 服務器? 如果是這樣,怎么辦?

嘗試:

socket.emit('get country', new Ack() {
  @Override
  public void call(Object... args) {
    String country = (String)args[0];
    Log.i("log", country);
  }
});

您只能使用Ack接口作為回調。

暫無
暫無

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

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