[英]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.