Как использовать подписки graphql в клиенте Android - PullRequest
0 голосов
/ 18 декабря 2018

Как использовать подписки graphq в клиенте Apollo Android.Теперь у меня есть код на моем сервере:

type Subscription {    
     targetLocationUpdated(id: String!): Target
}

И код моего резольвера:

Subscription: {
    locationAdded: {
        subscribe: () => pubsub.asyncIterator(LOCATION_ADDED),
    },
    targetLocationUpdated: {
        subscribe: withFilter(
            () => pubsub.asyncIterator('TARGET_UPDATED'),
            (payload, variables) => {
                console.log(payload.targetLocationUpdated.id === variables.id);
                return payload.targetLocationUpdated.id === variables.id;
            }
        )
    }
}

В моем клиенте Android есть метод для запросов на отдых к моей конечной точке сервера graphql:

  public static ApolloClient getMyApolloClient() {


    HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
    loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);

    OkHttpClient okHttpClient = new OkHttpClient.Builder()
            .addInterceptor(loggingInterceptor)
            .build();
    myApolloClient = ApolloClient.builder()
            .serverUrl(BASE_URL)
            .okHttpClient(okHttpClient)
            .build();
    return myApolloClient;
}
}

Но я не знаю, как использовать подписку на Android-клиент.В официальной документации appolo я не нашел примеров использования подписки в Android-клиенте.Помогите мне пожалуйста разрешить этот вопрос.

1 Ответ

0 голосов
/ 28 января 2019

Я ссылался на эту ссылку, она может помочь вам или другим.

https://github.com/apollographql/apollo-android/blob/master/apollo-sample/src/main/java/com/apollographql/apollo/sample/detail/GitHuntEntryDetailActivity.java

ApolloSubscriptionCall<RepoCommentAddedSubscription.Data> subscriptionCall = application.apolloClient()
    .subscribe(new RepoCommentAddedSubscription(repoFullName));

disposables.add(Rx2Apollo.from(subscriptionCall)
    .subscribeOn(Schedulers.io())
    .observeOn(AndroidSchedulers.mainThread())
    .subscribeWith(
        new DisposableSubscriber<Response<RepoCommentAddedSubscription.Data>>() {
          @Override public void onNext(Response<RepoCommentAddedSubscription.Data> response) {
            commentsListViewAdapter.addItem(response.data().commentAdded().content());
            Toast.makeText(GitHuntEntryDetailActivity.this, "Subscription response received", Toast.LENGTH_SHORT)
                .show();
          }

          @Override public void onError(Throwable e) {
            Log.e(TAG, e.getMessage(), e);
            Toast.makeText(GitHuntEntryDetailActivity.this, "Subscription failure", Toast.LENGTH_SHORT).show();
          }

          @Override public void onComplete() {
            Log.d(TAG, "Subscription exhausted");
            Toast.makeText(GitHuntEntryDetailActivity.this, "Subscription complete", Toast.LENGTH_SHORT).show();
          }
        }
    )
);
...