介绍
add-graphql-subscriptions 是一个 npm 包,它为基于 GraphQL 的应用程序添加了实时数据更新的功能。它支持使用不同的传输协议(如 WebSocket 和 MQTT),而无需重新构建应用程序。本文将向您介绍如何使用 add-graphql-subscriptions。
安装
您可以使用 npm 或 yarn 安装 add-graphql-subscriptions:
npm install --save add-graphql-subscriptions # 或者 yarn add add-graphql-subscriptions
用法
1. 初始化 PubSub 消息传输对象
PubSub 消息传输对象是 add-graphql-subscriptions 中的一个类,它提供订阅、发布和取消订阅功能。在使用 add-graphql-subscriptions 之前,您必须初始化 PubSub 对象:
import { PubSub } from "add-graphql-subscriptions"; const pubsub = new PubSub();
2. 添加 SubscriptionResolver
SubscriptionResolver 是一个与 GraphQL 查询和变异类似的对象,它定义了如何订阅和返回数据。下面是一个简单的 SubscriptionResolver 示例:
const subscriptionResolver = { messageAdded: { subscribe: (parent, args, { pubsub }) => pubsub.asyncIterator("MESSAGE_ADDED"), }, };
这个示例定义了一个名为 messageAdded 的订阅,它将订阅来自名为 MESSAGE_ADDED 的频道的所有消息。
3. 将 SubscriptionResolver 添加到 GraphQL Schema
假设您已经有了一个 GraphQL Schema,可以像这样将 SubscriptionResolver 添加到它:
-- -------------------- ---- ------- ------ - -------------------- - ---- ---------------- ----- -------- - - ---- ------- - --- --- ----- ------ - ---- ----- - --------- --------- - ---- ------------ - ------------- ------- - -- ----- --------- - - ------ - --------- -- -- --- --- ---- -- ------------- --------------------- -- ----- ------ - ---------------------- --------- --------- ---
4. 启动 WebSocket 服务器
最后,您需要启动一个 WebSocket 服务器,它将负责处理客户端的订阅和推送实时数据更新。以下是一个基于 Node.js 的 WebSocket 服务器示例:
-- -------------------- ---- ------- ------ - -------- --------- - ---- ---------- ------ - ------------ - ---- ------- ------ - ------------------ - ---- ----------------------------- ----- ------ - ---------------------- --------- -- - -- --- -- --- ----- ------------------ - -------------------------- - ------- -------- ---------- -- - ------- ----- ----------------- - --
上面的代码使用 subscriptions-transport-ws 包创建了一个 SubscriptionServer,它使用 schema、execute 和 subscribe 参数。然后,服务器将使用 HTTP 或 HTTPS 协议侦听 WebSocket 连接的请求,路径为 /subscriptions。
现在您已经完成了实时数据更新的设置,可以使用一个 GraphQL 客户端连接到 WebSocket 服务器,并使用订阅来监听数据更新。
总结
本文简要介绍了 npm 包 add-graphql-subscriptions 的使用方法。通过使用 add-graphql-subscriptions,您可以轻松地为基于 GraphQL 的应用程序添加实时数据更新的功能。此外,本文还提供了示例代码,以更好地指导您如何使用 add-graphql-subscriptions。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5f68bc73a9b7065299ccb7d2