Может быть много сценариев, когда люди могут захотеть добавить функцию реального времени в свой проект.
Рассмотрим ниже сценарий -
Вы создаете новостную ленту в реальном времени, которая обновляет данные всякий раз, когда происходит какое-либо изменение или добавление, без обновления всей страницы.
Основная идея реализации
Основной технологией, используемой для этой цели, является Websocket. Они позволяют установить длительное соединение с одним сокетом TCP между клиентом и сервером, что позволяет мгновенно распределять двунаправленные полнодуплексные сообщения с небольшими накладными расходами, что приводит к соединению с очень низкой задержкой.
Хватит теории! Давайте реализуем это
- В основном мы используем ApolloServer версии 2.9, которая является последней на момент написания этого блога.
- Поскольку в ApolloServer версии 1.* и версии 2.* есть много критических изменений, эта реализация может не работать в более старой версии Apollo (‹ 2.*).
Давайте сначала добавим важный пакет
Теперь мы добавим простое определение типа
Теперь добавим резольвер
Вот последний фрагмент кода, который запускает сервер с подпиской на основе WebSocket.
Эта конфигурация создает сервер GraphQL с мутацией, запросом и подпиской. Он также автоматически создает соединение WebSocket, которое обычно открывает соединение по этому адресу ws://localhost:4000/graphql.
Полный код здесь
PubSub
Реализации
Реализация Apollo Server PubSub
может быть заменена другой реализацией интерфейса PubSubEngine. Сообщество создало следующие интеграции:
- Редис
- Гугл ПабСаб
- Брокер с поддержкой MQTT
- КроликMQ
- Кафка
- Постгрес
- Облачный магазин Google Fire Store
- Добавь свою реализацию…
Вы можете реализовать PubSub
самостоятельно, используя экспортированный PubSubEngine
интерфейс из apollo-server
или другую интеграцию.
Проверьте ссылку ниже для более подробной информации
Удачного кодирования!