Il mio problema è che non riesco a ottenere lo streaming infinito con Retrofit
. Dopo aver ottenuto le credenziali per la richiesta di poll() iniziale - faccio la richiesta di polling() iniziale. Ogni richiesta di poll() risponde in 25 secondi se non ci sono cambiamenti, o prima se ci sono cambiamenti - return changed_data []. Ogni risposta contiene i dati timestamp
necessari per la successiva richiesta di polling: dovrei fare una nuova richiesta di poll() dopo ogni risposta poll(). Qui è il mio codice:RxJava + Retrofit polling lungo
getServerApi().getLongPollServer()
.flatMap(longPollServer -> getLongPollServerApi(longPollServer.getServer()).poll("a_check", Config.LONG_POLLING_SERVER_TIMEOUT, 2, longPollServer.getKey(), longPollServer.getTs(), "")
.take(1)
.flatMap(longPollEnvelope -> getLongPollServerApi(longPollServer.getServer()).poll("a_check", Config.LONG_POLLING_SERVER_TIMEOUT, 2, longPollServer.getKey(), longPollEnvelope.getTs(), "")))
.retry()
.subscribe(longPollEnvelope1 -> {
processUpdates(longPollEnvelope1.getUpdates());
});
Sono nuovo di RxJava, forse non capisco qualcosa, ma non riesco a ottenere flusso infinito. Ottengo 3 chiamate, quindi onNext e onComplete.
P.S. Forse c'è una soluzione migliore per implementare il polling lungo su Android?
Nel tuo caso, prenderei in considerazione l'implementazione del mio 'Osservabile' con' Observable.create() ' –