Вопрос: Какая подписка на graphql?
Ответ: Клиент отправляет данные на одном конце, и они появляются на другом конце, и это происходит, только если они оба подключены к одному каналу.
Сомнение: необходимо ли иметь один экземпляр PubShub в контексте Graphql.для создания и публикации события в приложении, или вы можете создать распределенный экземпляр во всех модулях, и каждый экземпляр может автоматически прослушивать канал другого
SILLY: Первый, на мой взгляд, правильный, но ни один из них не работает.В первом случае Context.Pubsub.publish (...) возвращает true, поскольку на другом конце [подписка] я ничего не получаю, общая подписка не работает.Пожалуйста, помогите
SHARED PUBSUB
import { Pubsub } from 'graphql-yoga'
...
context = { PubSub: new PubSub() }
...
...
resolver = {
anyResolver: async (__, _, Context) {
// creating event which will fire subscription
// connected to following Pubsub channel.
await Context.Pubsub.publish('THEROCK', { 'epoc': 'who am i' })
return ...Fields...
}
}
...
...
subscription = {
MostWanted: {
subscribe: (__, _, Context) => Context.Pubsub.asyncIterator('THEROCK')
}
}
...
РАСПРЕДЕЛЕННЫЙ PUBSUB
...
import { Pubsub } from 'graphql-yoga'
const pubsub = new Pubsub()
resolver = {
anyResolver: async (__, _, Context) {
// creating event which will fire subscription
// connected to following Pubsub channel.
await pubsub.publish('THEROCK', { 'epoc': 'who am i' })
return ...Fields...
}
}
...
...
import { Pubsub } from 'graphql-yoga'
const pubsub = new Pubsub()
subscription = {
MostWanted: {
subscribe: (__, _, Context) => pubsub.asyncIterator('THEROCK')
}
}
...