GraphQL subscriptions?—?это крутая возможность GraphQL сделать real-time приложение за считанные минуты.
Facebook в релиз GraphQL не стал вносить подписки. Эту проблему решила команда Apollo.
Продолжайте знакомство с GraphQL subscriptions, если уже знаете основы GraphQL.
Простой пример реактивности вы уже видели в начале статьи. Чтобы самостоятельно его повторить, установите и запустите репозитории.
Подписки GraphQL?—?это просто:
Подписки GraphQL работают аналогично и более масштабно. Вы подписываетесь на любое событие, которое запустит мутация.
Queries и mutations работают по HTTP каналу и только subscriptions через web sockets.
Web sockets?—?это транспорт, который позволяет быстро обмениваться данными между клиентом и сервером.
Механизм подписок работает через PubSub или publish & subscribe.
PubSub?—?это буфер, в который помещается новое событие с определенным именем.
Так, в методе мутации resolve объявляется pubsub. Когда запустится мутация, pubsub получит новое событие, а подписка с точно таким же именем, его перехватит и что-то выполнит.
Мы закончили. Для получения большей информацией, можете обратиться к оффициальным источникам:
Сегодня вы познакомились с подписками GraphQL, который позволяет сделать приложение “живым”. Пример можно доработать:
Если у вас имеются вопросы или пожелания, я с удовольствием отвечу в комментариях.
Спасибо за внимание.
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-subscriptions: основной пакет для реализации подписок
- subscriptions-transport-ws: транспорт websocket
- Apollo subscriptions GraphQL server: документация Apollo
Сегодня вы познакомились с подписками GraphQL, который позволяет сделать приложение “живым”. Пример можно доработать:
- добавить собеседника или сделать групповой чат
- реализовать GPG шифрование сообщений
- и многое другое
Если у вас имеются вопросы или пожелания, я с удовольствием отвечу в комментариях.
Спасибо за внимание.
Поделиться с друзьями
DexterHD
Я всегда думал, что приложения «реального времени» — это программы работающие в «операционных системах реального времени». Например в ПЛК при автоматизации технологических процессов, или системы управления самолетом. А это просто web приложение с постоянным подключением через WebSocket, ни какого отношения к «системам реального времени» не имеющее.
napa3um
https://en.wikipedia.org/wiki/Real-time_web
ReklatsMasters
У вас в одном месте написано real-rime (в заголовке), в статье же про реальное время. Мне кажется, что real time достаточно устоявшийся термин и его не стоит переводить
napa3um
Вы меня с кем-то перепутали.
nikitamarcius
Да, так будет лучше. Спасибо.