Специфические мутации клиентских расставаний - PullRequest
1 голос
/ 27 июня 2019

Я знаю, что можно использовать apollo-link-ws для обработки подписок на стороне клиента. Также я создал клиента, который использует стандартные http для запуска Queris и Mutations и использует WebSocket для subscriptions. Но мне нужно Pub (излучать) некоторые данные на сервер через веб-сокет тоже. Таким образом, способ использует только apollo-link-ws для всех действий (Query, Mutation). Но возможно ли принять решение, какой Query использует Websocket, а какой - стандартный HTTP-клиент?

import { ApolloClient } from 'apollo-client';
import { getMainDefinition } from 'apollo-utilities';
import { split } from 'apollo-link';
import { createUploadLink } from 'apollo-upload-client';
import { WebSocketLink } from 'apollo-link-ws';
import { InMemoryCache } from 'apollo-cache-inmemory';
import { ApolloProvider } from 'react-apollo';

const uploadLink = createUploadLink({
  uri:`http://localhost:8899/graphql`,
  credentials: 'include'
});

const wsLink = new WebSocketLink({
  uri: `ws://localhost:8899/graphql`,
  options: {
    reconnect: true,
    timeout: 120000,
  }
})

const client = new ApolloClient({
  link: split(
    // split based on operation type
    ({ query }) => {
      const definition = getMainDefinition(query);
      console.table(definition);
      return (
        definition.kind === 'OperationDefinition' &&
        definition.operation === 'subscription'
      );
    },
    wsLink,
    uploadLink),
  cache : new InMemoryCache(),

});

И я передаю клиента ApolloProvider.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...