【问题标题】:Apollo GraphQL with Vertx Subscription failed带有 Vertx 订阅的 Apollo GraphQL 失败
【发布时间】:2020-10-18 06:38:46
【问题描述】:

我在暴露于的 docker 实例(窗口机器)上运行 Hasura GraphQL

http://192.168.99.100:8080/v1/graphql

我想在我的 Verticle 中执行订阅,但收到以下异常:

    com.apollographql.apollo.exception.ApolloNetworkException: Subscription failed
        at com.apollographql.apollo.internal.RealApolloSubscriptionCall$SubscriptionManagerCallback.onNetworkError(RealApolloSubscriptionCall.java:246)
        at com.apollographql.apollo.internal.subscription.RealSubscriptionManager$SubscriptionRecord.notifyOnNetworkError(RealSubscriptionManager.java:524)
        at com.apollographql.apollo.internal.subscription.RealSubscriptionManager.onTransportFailure(RealSubscriptionManager.java:296)
        at com.apollographql.apollo.internal.subscription.RealSubscriptionManager$SubscriptionTransportCallback$2.run(RealSubscriptionManager.java:556)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.SocketTimeoutException: Read timed out
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
        at java.net.SocketInputStream.read(SocketInputStream.java:170)
        at java.net.SocketInputStream.read(SocketInputStream.java:141)

这是我的 apollo graphQL 客户端示例代码:

public class MyFirstVerticle extends AbstractVerticle {

    @Override
    public void start(Future<Void> fut) {

        OkHttpClient okHttp = new OkHttpClient().newBuilder().build();

        ApolloClient subscribe = ApolloClient.builder()
                .serverUrl("http://192.168.99.100:8080/v1/graphql")
                .subscriptionTransportFactory(new WebSocketSubscriptionTransport.Factory(
                        "wss://192.168.99.100:8080/v1/graphql", okHttp))
                .build();

        subscribe.subscribe(new MySubscription(1)).execute(new ApolloSubscriptionCall.Callback<Optional<MySubscription.Data>>() {
    ..... 
....

【问题讨论】:

    标签: vert.x apollo-client graphql-java graphql-subscriptions apollo-android


    【解决方案1】:

    我找到了解决方案,显然它与您建立的连接类型有关。我不是这方面的专家,但您是否尝试过将 wss 更改为 http

    :-)

    【讨论】:

    • 不,我没有尝试将 wss 更改为 HTTP,bcz 我从文档中了解到的是与 graphQL 引擎建立 Web 套接字连接,并且使用了 wss 协议。
    猜你喜欢
    • 2017-09-19
    • 2020-08-17
    • 2020-10-08
    • 2019-01-18
    • 2022-12-12
    • 2019-01-27
    • 2020-08-03
    • 2020-07-07
    • 2017-09-01
    相关资源
    最近更新 更多