Size: a a a

GraphQL — русскоговорящее сообщество

2018 June 23

ИП

Иван Плесских in GraphQL — русскоговорящее сообщество
Типа мессенджера
источник

S

Sunlive in GraphQL — русскоговорящее сообщество
РЕАКТ?
источник

K

Koote in GraphQL — русскоговорящее сообщество
Niko lai
А что за продукт?
Удачи
источник
2018 June 25

ИП

Иван Плесских in GraphQL — русскоговорящее сообщество
Крч вот такой клиентик накидал что б аполло ебучий не использовать (нужна была возможность полностью дисконнектиться и абсолютно не нужен дублирующий стейт менеджмент и кеширование)
источник

ИП

Иван Плесских in GraphQL — русскоговорящее сообщество
import { onError } from 'apollo-link-error'
import { ApolloLink, split, execute } from 'apollo-link'
import { setContext } from 'apollo-link-context'
import { HttpLink } from 'apollo-link-http'
import { WebSocketLink } from 'apollo-link-ws'
import { getMainDefinition } from 'apollo-utilities'
import noop from 'lodash/noop'

window.useHttp = (bool=true) => {
   if (bool)
       localStorage.setItem('useHttp', '1')
   else
       localStorage.removeItem('useHttp')
   location.reload()
}

export default class Client {
   ws = null
   link = null

   constructor(uri, Authorization, onFirstConnect=noop, onDisconnect=noop, onReconnect=noop) {
       const http = localStorage.getItem('useHttp')
       this.ws = new WebSocketLink({
           uri: uri.replace('http', 'ws'),
           options: {
               reconnect: true,
               connectionParams: {
                   Authorization,
               },
           },
       })
       this.ws.subscriptionClient.onConnected(onFirstConnect)
       this.ws.subscriptionClient.onDisconnected(onDisconnect)
       this.ws.subscriptionClient.onReconnected(onReconnect)

       let link = this.ws
       if (http) {
           const httpLink = new HttpLink({uri})

           const authLink = setContext((_, {headers}) => {
               return {
                   headers: {
                       ...headers,
                       Authorization,
                   },
               }
           }).concat(httpLink)

           link = split(
               ({query}) => {
                   const {kind, operation} = getMainDefinition(query)
                   return kind === 'OperationDefinition' && operation === 'subscription'
               },
               this.ws,
               authLink,
           )
       }

       this.link = ApolloLink.from([
           onError(({graphQLErrors, networkError}) => {
               graphQLErrors && graphQLErrors.map(({message, locations, path}) =>
                   // eslint-disable-next-line no-console
                   console.error(
                       `[GraphQL error]: Message: ${message},\n` +
                       `Path: ${path} ${JSON.stringify(locations)}`
                   )
               )
               // eslint-disable-next-line no-console
               networkError && console.log(`[Network error]: ${networkError}`)
           }),
           link,
       ])
   }

   execute(query, variables) {
       return new Promise((resolve, reject) =>
           execute(this.link, {query, variables}).subscribe({next: resolve, error: reject})
       )
   }

   subscribe(query, variables, cb) {
       execute(this.link, {query, variables}).subscribe({next: cb})
   }

   close() {
       this.ws.subscriptionClient.unsubscribeAll()
       this.ws.subscriptionClient.close()
   }
}
источник

ИП

Иван Плесских in GraphQL — русскоговорящее сообщество
По умолчанию используем только вебсокеты, но для отладки сделал возможность на хттп переключаться
источник

ИП

Иван Плесских in GraphQL — русскоговорящее сообщество
Думаю теперь, есть ли смысл выкладывать в отдельный пакет
источник

ИП

Иван Плесских in GraphQL — русскоговорящее сообщество
Какой-нибудь another-gql-client
источник

M

Maksim in GraphQL — русскоговорящее сообщество
может кто поделиться ссылками на проекты, где использется GraphQL? Хотелось бы посмотреть на код
источник

M

Maksim in GraphQL — русскоговорящее сообщество
в идеале бы проекты, где используется react, react-apollo, но другие тоже подойдут
источник

A

Abu in GraphQL — русскоговорящее сообщество
Maksim
может кто поделиться ссылками на проекты, где использется GraphQL? Хотелось бы посмотреть на код
Spectrum
источник

MS

Makar Stetsenko in GraphQL — русскоговорящее сообщество
Иван Плесских
Какой-нибудь another-gql-client
Конечно!
источник

ИП

Иван Плесских in GraphQL — русскоговорящее сообщество
Мб заделаю на днях
источник

MG

Misha Gavelya in GraphQL — русскоговорящее сообщество
Abu
Spectrum
Можно линк?
источник

A

Abu in GraphQL — русскоговорящее сообщество
Misha Gavelya
Можно линк?
В гугле первая ссылка
источник

RR

Roman Roman in GraphQL — русскоговорящее сообщество
Иван Плесских
Крч вот такой клиентик накидал что б аполло ебучий не использовать (нужна была возможность полностью дисконнектиться и абсолютно не нужен дублирующий стейт менеджмент и кеширование)
так юзать гкуль+кеш вместо локал стореджа это же самая мякотка
источник

MG

Misha Gavelya in GraphQL — русскоговорящее сообщество
источник

A

Abu in GraphQL — русскоговорящее сообщество
источник

MG

Misha Gavelya in GraphQL — русскоговорящее сообщество
спс
источник

ИП

Иван Плесских in GraphQL — русскоговорящее сообщество
Roman Roman
так юзать гкуль+кеш вместо локал стореджа это же самая мякотка
Ну у нас редакс во все поля
источник