Невозможно понять Подписки GraphQL, используя ActionCable с графом gem - PullRequest
0 голосов
/ 23 декабря 2018

Я пытаюсь реализовать Подписки GraphQL, используя ActionCable с graphql-ruby gem.

По этой ссылке я понял, что необходимо создать канал GraphQL, на который клиенты должны подписаться.Обычно в ActionCable мы будем stream_from требуемый канал в действии subscribed.Но пример в ссылке указывает метод execute с параметром.Когда этот метод будет выполнен?

Кроме того, doc сообщает See Apollo Client or Relay Modern для использования клиентом.Обязательно ли использовать какой-либо из них или я могу использовать coffeescript для подписки и обновления пользовательского интерфейса?

1 Ответ

0 голосов
/ 26 июня 2019

Не уверен, что вы уже решили свою проблему, но для тех, у кого есть проблемы с пониманием того, как GraphQL работает с ActionCable.Я создал пример репозитория и постараюсь обновить документы, чтобы лучше.

https://github.com/bidluo/GraphQL-ActionCableSubscriptions

Чтобы ответить на ваш вопрос, выполните то же, что и любое действие ActionCable при отправке сообщений, чтобыпозвонив, вы сделаете следующее, если данные содержат все, а запрос - это на самом деле единственный бит GraphQL.

{
   "command":"message",
   "identifier":"{\"channel\":\"GraphqlChannel\"}",
   "data":"{ \"query\": \"subscription { newMessage { content } }\", \"variables\": null, \"action\": \"execute\" }"
}

Но вам нужно сначала убедиться, что вы подписаны на канал:

{
   "command":"subscribe",
   "identifier":"{\"channel\":\"GraphqlChannel\"}"
}
...