GraphQL 是一种新的数据查询语言,它的前端应用广泛,因为它可以在一个请求中获取所需的数据,而不是多次请求。GraphQL 的标准使用语言是 JavaScript,因此面向前端的 npm 库使用 GraphQL 非常方便。
本文介绍的 npm 包 graphql-factory-subscription
是一个用来方便地管理 GraphQL 订阅的库。本文将深入介绍这个库的使用,并附有详细的指导意义和示例代码。
graphql-factory-subscription
graphql-factory-subscription
是一个用来管理 GraphQL 订阅的 npm 库。它提供了一种声明式的方式来定义 GraphQL 订阅服务器,并使订阅管理变得容易。
graphql-factory-subscription
允许你:
- 在服务器上定义订阅
- 按类型过滤订阅
- 接收订阅更新通知
- 终止订阅
graphql-factory-subscription
实现了 GraphQL subscriptions spec。它还支持 UMD 和 ES6 模块。
现在,让我们来看看怎么使用它!
安装
首先,你需要安装 graphql-factory-subscription
npm 包:
npm install graphql-factory-subscription --save
用法
接下来,我们将详细介绍如何使用 graphql-factory-subscription
。
1. 初始化 SubscriptionManager
SubscriptionManager
是 graphql-factory-subscription
的核心。它是用来管理 GraphQL 订阅的对象。要初始化 SubscriptionManager
,你需要传递一个包含以下字段的对象:
schema
: 一个 GraphQLSchema 对象pubsub
: 一个实现了publish
方法的 PubSub 对象setupFunctions
: 用来设置订阅服务器的可选函数
这里有一个简单的示例:
-- -------------------- ---- ------- ------ - ------------------- - ---- ------------------------------- ------ - ------ - ---- ------------------------ ------ - -------------------- - ---- ---------------- -- -- ------- ---- ----- -------- - - ---- ----- - ------ ------ - -- -- ---- ----- --------- - - ------ - ------ -- -- ------ ------- - -- -- -------- ------------- -- ----- ------ - ---------------------- --------- --------- --- -- -- ------ -- ----- ------ - --- --------- -- --- ------------------- -- ----- ------------------- - --- --------------------- ------- ------- --------------- -- ---
2. 定义订阅类型
一旦你初始化了 SubscriptionManager
,你就可以添加订阅类型了。你可以使用 SubscriptionManager
对象的 addSubscriptionType
方法向订阅管理器添加订阅。addSubscriptionType
方法需要一个包含以下字段的对象:
subscription
: 用于订阅的 GraphQL 查询类型resolver
: 用于处理订阅的函数filter
: 用于过滤订阅的函数
这里有一个 addSubscriptionType
的例子:
-- -------------------- ---- ------- ------ - ------------------- - ---- ------------------------------- ------ - ------ - ---- ------------------------ ------ - -------------------- - ---- ---------------- -- -- ------- ---- ----- -------- - - ---- ----- - ------ ------ - ---- ------------ - -------------- -------- ------ - -- -- ---- ----- --------- - - ------ - ------ -- -- ------ ------- -- ------------- - --------- - ---------- -------- ----- -------- -- ----------------------------------------- -------- --------- ----- -- ------- -------------- - - -- -- -------- ------------- -- ----- ------ - ---------------------- --------- --------- --- -- -- ------ -- ----- ------ - --- --------- -- --- ------------------- -- ----- ------------------- - --- --------------------- ------- ------- --------------- -- --- -- ------ ----------------------------------------- ------------- - ------------ --------------- ------- - -------------- ------ - -- --------- ----- --------- ----- -------- ----- -- - ------ ------- - ---------------- - ----- -- ------- --------- ---------- -- --------------- -- ----------------------------------------- ---
3. 订阅更新
现在,我们已经定义了订阅,让我们来订阅它们。你可以使用 SubscriptionManager
对象的 subscribe
方法订阅一个订阅类型。subscribe
方法需要一个包含以下字段的对象:
query
: 订阅的 GraphQL 查询字符串variables
: 订阅查询所需的变量context
: 一个包含pubsub
属性的上下文对象
这里有一个 subscribe
的例子:
-- -------------------- ---- ------- ------ - ------------------- - ---- ------------------------------- ------ - ------ - ---- ------------------------ ------ - -------------------- - ---- ---------------- -- -- ------- ---- ----- -------- - - ---- ----- - ------ ------ - ---- ------------ - -------------- -------- ------ - -- -- ---- ----- --------- - - ------ - ------ -- -- ------ ------- -- ------------- - --------- - ---------- -------- ----- -------- -- ----------------------------------------- -------- --------- ----- -- ------- -------------- - - -- -- -------- ------------- -- ----- ------ - ---------------------- --------- --------- --- -- -- ------ -- ----- ------ - --- --------- -- --- ------------------- -- ----- ------------------- - --- --------------------- ------- ------- --------------- -- --- -- ------ ----------------------------------------- ------------- - ------------ --------------- ------- - -------------- ------ - -- --------- ----- --------- ----- -------- ----- -- - ------ ------- - ---------------- - ----- -- ------- --------- ---------- -- --------------- -- ----------------------------------------- --- -- ---- ------------------------------- ------ - ------------ --------------- ------- - -------------- ------ - -- ---------- - ----- ------- -- -------- - ------ - -- ------- ------- -- - -- ------- - --------------------- - ---- - -------------------- - ---
4. 终止订阅
你可以使用 SubscriptionManager
对象返回的订阅句柄来终止订阅。SubscriptionManager
对象的 subscribe
方法返回一个带有 unsubscribe
方法的对象。你可以调用 unsubscribe
方法来终止订阅。
-- -------------------- ---- ------- -- ---- ----- ------------ - ------------------------------- ------ - ------------ --------------- ------- - -------------- ------ - -- ---------- - ----- ------- -- -------- - ------ - -- ------- ------- -- - -- ------- - --------------------- - ---- - -------------------- - --- -- ---- ---------------------------
5. 按类型过滤订阅
SubscriptionManager
对象的 addFilter
方法可以让你按类型过滤订阅。addFilter
方法需要一个包含以下字段的对象:
type
: 订阅类型名称filter
: 用于过滤订阅的函数
这里有一个 addFilter
的例子:
-- -------------------- ---- ------- ------ - ------------------- - ---- ------------------------------- ------ - ------ - ---- ------------------------ ------ - -------------------- - ---- ---------------- -- -- ------- ---- ----- -------- - - ---- ----- - ------ ------ - ---- ------------ - -------- --- ---------- --- - -- -- ---- --- ----- - -- ----- --------- - - ------ - ------ -- -- ------ ------- -- ------------- - -------- - ---------- -------- ----- -------- -- ---------------------------------------- -------- --------- -- ------------- -- ---------- - ---------- -------- ----- -------- -- ------------------------------------------ -------- --------- -- ------------- - - -- -- -------- ------------- -- ----- ------ - ---------------------- --------- --------- --- -- -- ------ -- ----- ------ - --- --------- -- --- ------------------- -- ----- ------------------- - --- --------------------- ------- ------- --------------- -- --- -- ------ ----------------------------------------- ------------- - ------------ ------- - ------- - -- --------- ----- --------- ----- -------- ----- -- - ------ ------- - ------------- - ----- -- ------- --------- ---------- -- ------------- - - --- ----------------------------------------- ------------- - ------------ --------- - --------- - -- --------- ----- --------- ----- -------- ----- -- - ------ ------- - ------------- - ----- -- ------- --------- ---------- -- ------------- - - --- -- ---- --------------------------------------------- --------- ---------- -------------------- -- - -- ------------------------------------------------- --- ---------- - ------ ------------- - - --- -- - ---- -- ------------------------------------------------- --- ------------ - ------ ------------- - - --- -- - ---- - ------ ----- - --- -- ------ -------------- -- - ------------------------- - ------ ------- --- --------------------------- - ------ ------- --- -- ------
结论
现在,你已经了解了如何使用 graphql-factory-subscription
npm 包来管理 GraphQL 订阅。本文提供了详细的指导意义和示例代码,可供参考和学习。希望你可以根据这些指南和示例,更好地管理 GraphQL 订阅。
如果你想深入了解 graphql-factory-subscription
的更多细节,请查看官方文档 graphql-factory-subscription GitHub page。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600562ef81e8991b448e0a89