graphql - Android apollo 订阅不起作用?

标签 graphql apollo apollo-server graphql-subscriptions apollo-android

我需要在我的 Android 应用中集成订阅subscriptiongraphiql 中的 localhost 上运行良好。我已经在 Heroku 上部署了我的后端。我正在使用 apollo-server 而不是 hasura。 我的 订阅 不适用于 Heroku 给出的 url,但它在 localhost 上运行良好。 Queriesmutations 适用于 localhostHeroku url。 所以我正在尝试从我的 Android 客户端访问我的订阅。我将基本 url 保留为我的本地主机。我已经为 localhost 正确配置了我的 Android 模拟器,queriesmutations 部分适用于我的 Android 客户端,但我的订阅部分不工作。

我已经为 subscription 配置了我的 Apollo 客户端

.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 替换为我的订阅的 Heroku url 时,我收到以下错误。

enter image description here

我面临的这两个问题是否相互关联?

最佳答案

所以我的代码没有问题。问题出在我使用的 Heroku 的免费层。我尝试用 Hasura 的 订阅替换我的订阅 https://hasura.io/learn/graphql/android/subscriptions/1-subscription/并且有效。

关于graphql - Android apollo 订阅不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62241232/

相关文章:

graphql - 如何在枚举中声明字符串

angular - 如何使用 angular 和 typescript 从 .graphql 文件加载查询

reactjs - React Apollo : One query, 多个参数 - 如何缓存?

azure - 使用 Azure Functions 中的 Apollo Server 连接到多个数据库

apollo-server - 记录每个请求的 apollo-server GraphQL 查询和变量

reactjs - 为中继自动生成 graphql 模式( Graphite 烯服务器)

filter - graphql where filter - "Unknown argument\"where\"

php - 如何在php中构造一个graphql突变查询请求

graphql - 运行 e2e 测试时在 cypress 中模拟特定的 graphql 请求

testing - 不变违规 : Unable to find node on an unmounted component. Apollo