Подписки Android Apollo не работают?

Мне нужно интегрировать subscription в свое приложение для Android. subscription отлично работает на localhost в graphiql. Я развернул свой бэкенд на Heroku. Я использую apollo-server, а не hasura. Мой subscriptions не работает для URL-адреса, указанного Heroku, но отлично работает на localhost. Queries и mutations прекрасно работают как для localhost, так и для Heroku URL. Итак, я пытаюсь получить доступ к своей подписке из своего клиента Android. Я сохранил базовый URL-адрес в качестве своего локального хоста. Я правильно настроил свой эмулятор Android для localhost, и часть queries и mutations работает для моего клиента Android, но моя часть подписки не работает.

Я настроил свой клиент Apollo для subscription, добавив это

.subscriptionTransportFactory(WebSocketSubscriptionTransport.Factory(baseUrl,okHttpClient))

Мой код подписки выглядит следующим образом

val healthConsultationSubscriptionList = GetHealthConsultationSubscription.builder().build()
        apolloClient.subscribe(healthConsultationSubscriptionList).execute(object :
            ApolloSubscriptionCall.Callback<GetHealthConsultationSubscription.Data> {
            override fun onFailure(e: ApolloException) {
                Log.i("datafailure","${e.message} ${e.localizedMessage} ${e.cause}" )
            }

            override fun onResponse(response: Response<GetHealthConsultationSubscription.Data>) {
                Log.i("datais", response.data()?.healthConsultation()?.chiefComplaint().toString() )
            }

            override fun onConnected() {
                Log.i("dataconnected","Connected")
            }

            override fun onTerminated() {
                Log.i("dataterminated","Terminated")
            }

            override fun onCompleted() {
                Log.i("datacompleted","Completed")
            }

        })

Но я продолжаю получать сообщение об ошибке Subscription failed Subscription failed java.net.ProtocolException: Expected HTTP 101 response but was '400 Bad Request'

Также, когда я использую Graphiql для своей подписки и заменяю localhost URL-адресом Heroku для своей подписки, я получаю следующую ошибку.

введите здесь описание изображения

Эти две проблемы, с которыми я сталкиваюсь, связаны друг с другом?


person Pritish    schedule 07.06.2020    source источник


Ответы (1)


Так что не было никаких проблем с моим кодом. Проблема была с бесплатным уровнем Heroku, который я использую. Я попытался заменить свою подписку на Hasura's Подписка https://hasura.io/learn/graphql/android/subscriptions/1-subscription/ и это работает.

person Pritish    schedule 19.06.2020