СоХабр закрыт.

С 13.05.2019 изменения постов больше не отслеживаются, и новые посты не сохраняются.

| сохранено

H GraphQL subscriptions для real-time приложения в черновиках Tutorial

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 шифрование сообщений
  • и многое другое

Если у вас имеются вопросы или пожелания, я с удовольствием отвечу в комментариях.

Спасибо за внимание.

комментарии (6)

+3
DexterHD ,  
GraphQL subscriptions — это крутая возможность GraphQL сделать приложение реального времени за считанные минуты.

Я всегда думал, что приложения «реального времени» — это программы работающие в «операционных системах реального времени». Например в ПЛК при автоматизации технологических процессов, или системы управления самолетом. А это просто web приложение с постоянным подключением через WebSocket, ни какого отношения к «системам реального времени» не имеющее.
0
napa3um ,  
https://en.wikipedia.org/wiki/Real-time_web
0
ReklatsMasters ,  

У вас в одном месте написано real-rime (в заголовке), в статье же про реальное время. Мне кажется, что real time достаточно устоявшийся термин и его не стоит переводить

0
napa3um ,  
Вы меня с кем-то перепутали.
0
nikitamarcius ,  
Да, так будет лучше. Спасибо.
+1
napa3um ,   * (был изменён)
.