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:
- Socket.io - ReferenceError: io no está definido
- Conectando clientes de escritorio y móviles a Django y Sails MVC webframeworks
- ¿Cómo puedo enviar params a Controller usando socket en Sails JS de Android
- Android navegador y socket io
- Comunicarse con socket.io desde android
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 } })
- ¿Cómo puedo manejar el
(Object... args)
. Un pequeño ejemplo de código sería genial. - 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 } });
- De nuevo, ¿cómo se supone que procesar el
(Object... args)
?
- NodeJS + SocketIO empuja a la aplicación para móviles
- Cliente Socket.io android java que recibe mensajes y envía ejemplo de archivo
- ¿Cómo enviar datos binarios con socket.io?
- Koush AndroidAsync ejemplo de socket
- Emitir mensajes socket.io en Android
- Mejores prácticas de Android Socket.IO para mantener la conexión activa
- Descartar error de transporte al utilizar Nodejs + SocketIO
- Conexión a un espacio de nombres socket.io mediante la biblioteca socket.io-client.java
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.
- No se puede instalar .apk después de decodificar y reconstruir (Apktool, Apkstudio)
- Emulador: ADVERTENCIA: El clásico qemu no admite SMP. La opción hw.cpu.ncore de su archivo de configuración es ignorada