Может быть много сценариев, когда люди могут захотеть добавить функцию реального времени в свой проект.

Рассмотрим ниже сценарий -

Вы создаете новостную ленту в реальном времени, которая обновляет данные всякий раз, когда происходит какое-либо изменение или добавление, без обновления всей страницы.

Основная идея реализации

Основной технологией, используемой для этой цели, является Websocket. Они позволяют установить длительное соединение с одним сокетом TCP между клиентом и сервером, что позволяет мгновенно распределять двунаправленные полнодуплексные сообщения с небольшими накладными расходами, что приводит к соединению с очень низкой задержкой.

Хватит теории! Давайте реализуем это

  • В основном мы используем ApolloServer версии 2.9, которая является последней на момент написания этого блога.
  • Поскольку в ApolloServer версии 1.* и версии 2.* есть много критических изменений, эта реализация может не работать в более старой версии Apollo (‹ 2.*).

Давайте сначала добавим важный пакет

Теперь мы добавим простое определение типа

Теперь добавим резольвер

Вот последний фрагмент кода, который запускает сервер с подпиской на основе WebSocket.

Эта конфигурация создает сервер GraphQL с мутацией, запросом и подпиской. Он также автоматически создает соединение WebSocket, которое обычно открывает соединение по этому адресу ws://localhost:4000/graphql.

Полный код здесь

PubSub Реализации

Реализация Apollo Server PubSub может быть заменена другой реализацией интерфейса PubSubEngine. Сообщество создало следующие интеграции:

Вы можете реализовать PubSub самостоятельно, используя экспортированный PubSubEngine интерфейс из apollo-server или другую интеграцию.

Проверьте ссылку ниже для более подробной информации



Удачного кодирования!