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)


  1. DexterHD
    03.05.2017 20:18
    +3

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

    Я всегда думал, что приложения «реального времени» — это программы работающие в «операционных системах реального времени». Например в ПЛК при автоматизации технологических процессов, или системы управления самолетом. А это просто web приложение с постоянным подключением через WebSocket, ни какого отношения к «системам реального времени» не имеющее.


    1. napa3um
      03.05.2017 20:40

      https://en.wikipedia.org/wiki/Real-time_web


      1. ReklatsMasters
        03.05.2017 21:22

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


        1. napa3um
          03.05.2017 21:23

          Вы меня с кем-то перепутали.


        1. nikitamarcius
          03.05.2017 21:25

          Да, так будет лучше. Спасибо.


  1. napa3um
    03.05.2017 20:40
    +1

    .