Как делать подписки на graphql и graphql с помощью svelte

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

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

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

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

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

Я также ищу такое же предложение. Какие-нибудь Новости?

Fred Hors 16.05.2019 00:56
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Что такое Apollo Client и зачем он нужен?
Что такое Apollo Client и зачем он нужен?
Apollo Client - это полнофункциональный клиент GraphQL для JavaScript-приложений, который упрощает получение, управление и обновление данных в...
6
1
1 549
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вот мое решение с использованием 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.info(result.data);

Хорошо, что вы можете сделать это даже без сапера. Прошел почти год с тех пор, как вы опубликовали это решение. Вы бы написали такое же решение сегодня?

mojo2go 07.06.2020 20:18

Я использую тонкие привязки urql. В документации также показано, как использовать привязки с Подписки.

пример на сайте не работает. у вас есть рабочий пример?

Rushi 16.05.2021 01:49

Другие вопросы по теме