Mein Problem ist, ich kann nicht unendlich Stream mit Retrofit
bekommen. Nachdem ich die Anmeldeinformationen für die erste Poll() Anfrage erhalten habe - ich initiale Poll() Anfrage. Jede poll() - Anfrage antwortet in 25 Sekunden, wenn keine Änderung erfolgt, oder früher, wenn Änderungen vorhanden sind - wobei geänderte_Daten [] zurückgegeben werden. Jede Antwort enthält timestamp
Daten, die für die nächste Abfrageanforderung benötigt werden - ich sollte eine neue poll() Anfrage nach jeder poll() Antwort machen. Hier ist mein Code:RxJava + Retrofit lange Polling
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());
});
Ich bin neu in RxJava, vielleicht verstehe ich nicht etwas, aber ich kann nicht unendlich Strom bekommen. Ich bekomme 3 Anrufe, dann OnNext und OnComplete.
P.S. Vielleicht gibt es eine bessere Lösung, um Long-Polling auf Android zu implementieren?
In Ihrem Fall würde ich in Erwägung ziehen, meine eigene 'Observable' mit' Observable.create() ' –