https://habrahabr.ru/post/327941/GraphQL subscriptions — это крутая возможность GraphQL сделать real-time приложение за считанные минуты.
Facebook в релиз GraphQL не стал вносить подписки. Эту проблему решила команда Apollo.
Продолжайте знакомство с GraphQL subscriptions, если уже знаете
основы GraphQL.
Простой пример реактивности вы уже видели в начале статьи. Чтобы самостоятельно его повторить, установите и запустите
репозитории.
Подписки GraphQL — это просто:
Предположем, у вас есть аккаунт Twitter и вы подписаны на Илона Маска. Когда у него появляется новая запись, вы ее читаете в первых рядах, в своей новостной ленте.
Подписки GraphQL работают аналогично и более масштабно. Вы подписываетесь на любое событие, которое запустит мутация.
Queries и
mutations работают по HTTP каналу и только
subscriptions через
web sockets.
Web sockets — это транспорт, который позволяет быстро обмениваться данными между клиентом и сервером.
Механизм подписок работает через PubSub или publish & subscribe.
PubSub — это буфер, в который помещается новое событие с
определенным именем.
Так, в методе мутации resolve объявляется pubsub. Когда запустится мутация, pubsub получит новое событие, а подписка с точно
таким же именем, его перехватит и что-то выполнит.
GraphQL subscriptions = GraphQL queries. Это тоже самое поле GraphQL,
которое будет выводить данные. Единственное их различие в том, что queries запускаются от рендеренга страницы на клиенте, а subscriptions от активации mutations.
Мы закончили. Для получения большей информацией, можете обратиться к оффициальным источникам:
Сегодня вы познакомились с подписками GraphQL, который позволяет сделать приложение “живым”. Пример можно доработать:
- добавить собеседника или сделать групповой чат
- реализовать GPG шифрование сообщений
- и многое другое
Если у вас имеются вопросы или пожелания, я с удовольствием отвечу в комментариях.
Спасибо за внимание.