Gestionar devoluciones de llamada en el cliente android de Socket.io v1.4

No puedo encontrar ningún documento sobre cómo manejar adecuadamente Ack y eventos en el último Socket.io ( v1.4.3 ). Todos los artículos existentes / pregunta se refieren a versiones anteriores, especialmente la clase IOCallback . Pero esa clase no está presente en la última versión.

Todo lo que logré averiguar hasta ahora es esto:

Para obtener devoluciones de llamada para eventos de Socket :

 mSocket.connect(); mSocket.on(Socket.EVENT_CONNECT, new Emitter.Listener() { @Override public void call(Object... args) { //What to do here } }) 
  1. ¿Cómo puedo manejar el (Object... args) . Un pequeño ejemplo de código sería genial.
  2. Parece que hay más de una docena de eventos, ¿tengo que manejar todo eso por separado? ¿O cuál es un buen conjunto mínimo de eventos que puedo implementar para ser informado sobre la conexión?

Para obtener devoluciones de llamada para eventos de emit individuales :

 mSocket.emit("payload", jsObj.toString(), new Ack() { @Override public void call(Object... args) { //TODO process ACK } }); 
  1. De nuevo, ¿cómo se supone que procesar el (Object... args) ?

Bien. Finalmente me di cuenta de eso por mi cuenta.

¿Cómo puedo manejar el (Object... args) en el método de call del oyente EVENT_CONNECT ?

Todavía no lo he deducido. Pero estoy mirando.

¿Qué es un buen conjunto mínimo de eventos que puedo implementar para ser informado sobre la conexión

Estos tres métodos serían suficientes:

Connect : Se dispara cuando se realiza una conexión correcta.
Connect_error : Se dispara cuando se produce un error de conexión.
Connect_timeout : Se dispara cuando se agota la conexión.

Fuente: Socket.io Docs

¿Cómo se supone que procesar el (Object... args) en un reconocimiento de emisión?

Así que estaba cavando a través de los documentos y encontró esto :

Servidor (app.js)

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

Cliente

 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' }); }); 

Así que los args serán cualesquiera que sea el servidor enviado como parámetro en la devolución de llamada. Así es como escribirías código de cliente Java para el código de servidor anterior:

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

El param también puede ser JSON, o cualquiera de los tipos de datos soportados en socket.io:

Enviamos una cadena, pero también puede hacer datos JSON con el paquete org.json, e incluso los datos binarios son compatibles.

  • ¿El método IOAcknowledge no funciona para SocketIO en Android?
  • Conectar cliente android a sails.js
  • Mostrar java.util.logging.Logger registra en Android Studio logcat
  • Cómo manejar eventos de socket como servicio de fondo en Android?
  • Android: usando el cliente java socket.io de Gottox en la aplicación android
  • AndroidAsync Socket.io ArrayIndexOutOfBoundsException
  • DataChannel.state () devuelve siempre CONNECTING webRTC Android
  • Aplicación de Android Conexión al servidor Node.js mediante Socket.io
  • WebSockets para Android en la aplicación Phonegap con Node.js / Socket.IO server & client
  • Android Nkzawa SocketIO desconectar y hacer una nueva conexión
  • Los websockets de AndroidAsync no funcionan
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.