2016-01-22 56 views
7

我无法找到任何有关如何正确处理Ack和事件的文档,最近的Socket.iov1.4.3)。所有现有的文章/问题都涉及旧版本,尤其是IOCallback类。但该类不在最新版本中。在Socket.io中处理回调Android客户端v1.4

所有我设法找到了到现在为止是这样的:

要获得回调Socket活动

mSocket.connect(); 

mSocket.on(Socket.EVENT_CONNECT, new Emitter.Listener() { 
    @Override 
    public void call(Object... args) { 
     //What to do here 
    } 
}) 
  1. 如何处理(Object... args)。一个小代码示例会很棒。
  2. 似乎有十几个事件,我必须分开处理所有事情吗?或者我可以实施哪些最低限度的事件以获知有关连接的信息?

获取各个emit事件回调:

mSocket.emit("payload", jsObj.toString(), new Ack() { 
    @Override 
    public void call(Object... args) { 
     //TODO process ACK 
    } 
}); 
  1. 同样,我怎么来处理(Object... args)

回答

2

好吧。我终于明白自己了。

如何处理在EVENT_CONNECT听者的call方法(Object... args)

我还没有想出来。但我在寻找。

什么是一个很好的最低设置,我可以实现事件的约连接

这三种方法就足够了通知:

连接:连接成功后解雇。
connect_error:在连接错误时触发。
connect_timeout:在连接超时时触发。

来源:Socket.io Docs

我怎么来处理的EMIT确认的(Object... args)

所以我是通过挖文档,发现this

服务器(应用程序。JS)

var io = require('socket.io')(80); 
    io.on('connection', function (socket) { 
    socket.on('ferret', function (name, fn) { 
     fn('woot'); 
    }); 
    }); 

客户

socket.on('connect', function() { // TIP: you can avoid listening on `connect` and listen on events directly too! 
    socket.emit('ferret', 'tobi', function (data) { 
     console.log(data); // data will be 'woot' 
    }); 
    }); 

所以ARGS将任何被作为参数传入回调服务器。因此,这是你会怎么写Java客户端代码上面的服务器代码:

public void call(Object... args) { 
    String response = (String)args[0]; //this will be woot 
} 

帕拉姆也可以是JSON或任何supported datatypes的socket.io:

我们发送一个字符串但是您也可以使用org.json包来执行JSON数据,甚至支持二进制数据!

+0

干杯。现在继续前进。 –

+1

@IntelliJAmiya欢迎您提高答案。 SO上的'socket.io'只有很少的帮助。 – ShahiM