【发布时间】:2015-06-17 07:52:26
【问题描述】:
我的问题是我无法使用Retrofit 获得无限流。在我获得初始 poll() 请求的凭据后 - 我执行初始 poll() 请求。如果没有变化,每个 poll() 请求都会在 25 秒内响应,或者如果有任何变化,则更早 - 返回 changed_data[]。每个响应都包含下一个轮询请求所需的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