2016-01-22 20 views
7

Ich bin nicht in der Lage, ein Dokument zu finden, wie Ack und Ereignisse in der neuesten Version Socket.io (v1.4.3) richtig zu behandeln. Alle vorhandenen Artikel/Fragen beziehen sich auf ältere Versionen, insbesondere die IOCallback Klasse. Aber diese Klasse ist nicht in der neuesten Version vorhanden.Handle Rückrufe in Socket.io Android Client v1.4

Alles, was ich bis jetzt, um herauszufinden, verwalten, ist dies:

Rückrufe für Socket Veranstaltungen zu bekommen:

mSocket.connect(); 

mSocket.on(Socket.EVENT_CONNECT, new Emitter.Listener() { 
    @Override 
    public void call(Object... args) { 
     //What to do here 
    } 
}) 
  1. Wie gehe ich mit den (Object... args). Ein kleines Codebeispiel wäre großartig.
  2. Es scheint mehr als ein Dutzend Ereignisse zu geben, muss ich das alles getrennt behandeln? Oder was ist eine gute Mindestmenge von Ereignissen, die ich implementieren kann, um über die Verbindung informiert zu werden?

Um Rückrufe für einzelne emit Events:

mSocket.emit("payload", jsObj.toString(), new Ack() { 
    @Override 
    public void call(Object... args) { 
     //TODO process ACK 
    } 
}); 
  1. Wieder wie soll ich das (Object... args) verarbeiten?

Antwort

2

Gut. Das habe ich schließlich selbst herausgefunden.

Wie gehe ich mit den (Object... args) auf den EVENT_CONNECTcall Methode des Zuhörers?

Ich habe das noch nicht herausgefunden. Aber ich schaue.

Was ein gutes Minimum von Ereignissen festgelegt ist, die ich umsetzen kann über die Verbindung

Diese drei Methoden ausreichen würde, informiert werden:

verbinden: auf eine erfolgreiche Verbindung Fired .
connect_error: Wird bei einem Verbindungsfehler ausgelöst.
connect_timeout: Wird bei einem Verbindungstimeout ausgelöst.

Quelle: Socket.io Docs

wie soll ich die (Object... args) auf einer emit Anerkennung verarbeiten soll?

So durch die docs ich graben und fand this:

Server (App.js)

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

Kunde

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

So sind die args wird unabhängig von der Server als Parameter in den Rückruf gesendet. Das ist also, wie Sie Java Client-Code für den obigen Server-Code schreiben würde:

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

Die param kann auch JSON sein, oder eines der supported datatypes in socket.io:

wir einen String senden aber Sie können JSON-Daten auch mit dem org.json-Paket tun, und sogar binäre Daten werden ebenfalls unterstützt!

+0

Prost. Jetzt gehen Sie voran. –

+1

@IntelliJAmiya Sie sind herzlich eingeladen, die Antwort zu verbessern. Es gibt so wenig Hilfe zu "socket.io", das auf SO verfügbar ist. – ShahiM