Rx java испускает недостаточно данных при получении ответа, кажется, в то же время - PullRequest
0 голосов
/ 17 апреля 2020

У меня проблема с rx java: когда я вызываю подписку API реального времени из grapql, данные ответа сервера клиенту (многие ответы кажутся одинаковыми). Клиент не может получить достаточно данных с сервера.

здесь код:

fun <D : Operation.Data, T : Operation.Data, V : Operation.Variables> subscribeWithRawResponse(
        subscriptionCall: Subscription<D, T, V>
    ): Flowable<Response<T>> {
        return Flowable.defer {
            Rx2Apollo.from(getApolloClient().subscribe(subscriptionCall).clone())
        }.handleResponse().observeOn(Schedulers.computation())
    }

inline fun <D : Operation.Data, T : Operation.Data, V : Operation.Variables, reified U : Any> subscribe(
        subscriptionCall: Subscription<D, T, V>
    ): Flowable<U> {
        return subscribeWithRawResponse(subscriptionCall)
            .flatMap { rawResponse ->
                val data: U? = extractDataGraphQLResponse(rawResponse)
                if (data != null) {
                    Flowable.just(data)
                } else {
                    Flowable.error(NullPointerException())
                }
            }
    }

предположим, что сервер вернется 4 раза с данными: Task1, Task2, Task3, Task4

ожидаемый результат при подписке клиента: Task1, Task2, Task3, Task4

но на самом деле в некоторых случаях клиент просто получает и отправляет: Task1, Task2, Task3

Так что, пожалуйста, помогите мне! Большое спасибо

...