我的问题是我无法使用Retrofit
获取无限流。在获取初始poll()
请求的凭据后,我进行了初始poll()
请求。如果没有更改,则每个poll()
请求会在25秒后响应,或者如果有任何更改,则会更早地响应-返回changed_data[]
。每个响应都包含下一个poll
请求所需的timestamp
数据-我应该在每个poll()
响应后进行新的poll()
请求。这是我的代码:
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());
});
我是RxJava的新手,可能有些地方还不太理解,但是我无法获取无限流。我只能获得3个调用,然后是onNext和onComplete。
另外,也许有更好的解决方案来实现Android上的长轮询吗?
Observable.create()
来实现自己的“Observable”。 - Dmitry Zaytsev