Как сделать подписки graphql и graphql с помощью svelte - PullRequest
2 голосов
/ 09 мая 2019

Для выполнения запросов и мутаций в GraphQL у меня был успех как с fetch, так и с svelte-apollo (см. https://github.com/timhall/svelte-apollo)

Мне нравится подход fech за его простоту.

Svelte-apollo имеет подпискии я постараюсь заставить его работать.

Но есть ли альтернативы?

Как вы используете подписки graphql с svelte?

1 Ответ

0 голосов
/ 17 июля 2019

Вот мое решение с использованием Apollo:

import { ApolloClient } from 'apollo-client';
import { InMemoryCache } from 'apollo-cache-inmemory';
import { HttpLink } from 'apollo-link-http';
import { WebSocketLink } from 'apollo-link-ws';
import { split } from 'apollo-link';
import { getMainDefinition } from 'apollo-utilities';

const httpLink = new HttpLink({
  uri: 'http://localhost:3000/graphql'
});
const wsLink = new WebSocketLink({
  uri: `ws://localhost:3000/subscriptions`,
  options: {
    reconnect: true
  }
});


const link = split(
  // split based on operation type
  ({ query }) => {
    const definition = getMainDefinition(query);
    return (
      definition.kind === 'OperationDefinition' &&
      definition.operation === 'subscription'
    );
  },
  wsLink,
  httpLink,
);

const client = new ApolloClient({
  link,
  cache: new InMemoryCache()
});

После всего этого у вас настроен клиент.Далее

import gql from 'graphql-tag';

client.subscribe({
  query: gql`subscription { whatever }`
}).subscribe(result => console.log(result.data);
...