Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Socket.io android客户端v1.4中处理回调_Java_Android_Sockets_Callback_Socket.io - Fatal编程技术网

Java 在Socket.io android客户端v1.4中处理回调

Java 在Socket.io android客户端v1.4中处理回调,java,android,sockets,callback,socket.io,Java,Android,Sockets,Callback,Socket.io,我无法在最新的Socket.io(v1.4.3)中找到任何关于如何正确处理Ack和事件的文档。所有现有的文章/问题都引用了旧版本,尤其是IOCallback类。但该类在最新版本中不存在 到目前为止,我所能发现的是: 获取套接字的回调事件: mSocket.connect(); mSocket.on(Socket.EVENT_CONNECT, new Emitter.Listener() { @Override public void call(Object... args) {

我无法在最新的
Socket.io
(v1.4.3)中找到任何关于如何正确处理Ack和事件的文档。所有现有的文章/问题都引用了旧版本,尤其是
IOCallback
类。但该类在最新版本中不存在

到目前为止,我所能发现的是:

获取
套接字的回调
事件

mSocket.connect();

mSocket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {
    @Override
    public void call(Object... args) {
        //What to do here
    }
})
  • 如何处理
    (对象…参数)
    。一个小的代码示例会很好
  • 似乎有十几个事件,我必须单独处理吗?或者,我可以实现的关于连接的最基本事件集是什么
  • 获取单个
    emit
    事件的回调:

    mSocket.emit("payload", jsObj.toString(), new Ack() {
        @Override
        public void call(Object... args) {
            //TODO process ACK
        }
    });
    
  • 同样,我应该如何处理
    (Object…args)

  • 嗯。我终于自己弄明白了

    如何处理事件连接侦听器的
    调用
    方法上的
    (对象…参数)

    我还没弄明白。但我在看

    我可以实施的关于连接的最基本事件集是什么

    这三种方法就足够了:

    连接:在成功连接时触发。
    连接错误:连接错误时触发。
    连接超时:在连接超时时触发

    资料来源:

    我应该如何处理发出确认上的
    (对象…args)

    于是我翻阅了文件,发现:

    服务器(app.js)

    客户

    因此,args将是服务器作为参数发送到回调中的任何参数。这就是为上述服务器代码编写
    Java
    客户端代码的方法:

    public void call(Object... args) {
      String response = (String)args[0]; //this will be woot
    }
    
    参数也可以是JSON,也可以是socket.io中的任何参数:

    我们发送一个字符串,但您也可以使用org.JSON包来处理JSON数据,甚至还支持二进制数据


    不,在Android中,它是这样工作的

    有效负载可以是JSONOBJECT/JSONArray

    import com.github.nkzawa.socketio.client.Ack
    
    socket.emit("EVENT_NAME", payload, Ack {
                        val ackData = it[0]
                        Logger.e(TAG, "ackData $ackData")
    
                    })
    
    服务器端

      socket.on('EVENT_NAME', (payload, callback) => {
       callback("success");
    });
    

    干杯。现在继续。@IntelliJAmiya欢迎您改进答案。socket.io上提供的
    socket.io帮助太少了。
    
    import com.github.nkzawa.socketio.client.Ack
    
    socket.emit("EVENT_NAME", payload, Ack {
                        val ackData = it[0]
                        Logger.e(TAG, "ackData $ackData")
    
                    })
    
      socket.on('EVENT_NAME', (payload, callback) => {
       callback("success");
    });