2016-01-22 12 views
7

Non riesco a trovare alcun documento su come gestire correttamente Ack ed Eventi nell'ultimo Socket.io (v1.4.3). Tutti gli articoli/domande esistenti si riferiscono a versioni precedenti, in particolare alla classe IOCallback. Ma quella classe non è presente nell'ultima versione.Gestire i callback in Socket.io Client Android v1.4

Tutti sono riuscito a scoprire fino ad ora è questo:

Per ottenere le richiamate per Socket Eventi:

mSocket.connect(); 

mSocket.on(Socket.EVENT_CONNECT, new Emitter.Listener() { 
    @Override 
    public void call(Object... args) { 
     //What to do here 
    } 
}) 
  1. Come posso gestire la (Object... args). Un piccolo esempio di codice sarebbe fantastico.
  2. Sembra che ci siano più di una dozzina di eventi, devo gestire tutto ciò separatamente? O quale è un buon insieme minimo di eventi che posso implementare per essere informato sulla connessione?

Per ottenere i callback per i singoli eventi emit:

mSocket.emit("payload", jsObj.toString(), new Ack() { 
    @Override 
    public void call(Object... args) { 
     //TODO process ACK 
    } 
}); 
  1. Anche in questo caso, come faccio per elaborare il (Object... args)?

risposta

2

Bene. Finalmente l'ho capito da solo.

Come posso gestire il (Object... args) sul metodo EVENT_CONNECT dell'ascoltatore call?

Non l'ho ancora capito. Ma sto guardando.

cosa è un buon minimo stabilito di eventi che posso realizzare di essere informato sulla connessione

Questi tre metodi sarebbero sufficienti:

collegare: Fired su una connessione riuscita .
connect_error: generato da un errore di connessione.
connect_timeout: Fired al timeout della connessione.

Fonte: Socket.io Docs

come faccio per elaborare il (Object... args) sulla consapevolezza Emit?

Così stavo scavando attraverso la documentazione e hanno trovato this:

Server (app.js)

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

client

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

Così i args sarà qualunque sia il server inviato come parametro nella callback. Quindi questo è come si potrebbe scrivere Java codice client per il codice precedente del server:

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

Il parametro può essere anche JSON, o una qualsiasi delle supported datatypes in socket.io:

abbiamo inviare una stringa ma puoi anche fare i dati JSON con il pacchetto org.json e anche i dati binari sono supportati!

+0

Cheers. Ora vai avanti. –

+1

@IntelliJAmiya siete invitati a migliorare la risposta. c'è così poco aiuto su 'socket.io' disponibile su SO. – ShahiM