简介
graphql-redis-subscriptions-async-iterator
是一个基于 Redis 的 GraphQL 实时订阅库。通过使用该库,您可以方便地实现 GraphQL 的实时订阅功能,而无需管理服务器上的 WebSockets 连接。
安装
您可以使用 npm
或 yarn
安装该库:
--- ------- ------------------------------------------
或者
---- --- ------------------------------------------
使用
在使用 graphql-redis-subscriptions-async-iterator
之前,您需要先创建一个 Redis 客户端,以便进行订阅和发布。以下是一个简单的示例:
----- ----- - ------------------ ----- ----- - --- ------- ----- - ----------- - - ----------------------------------------------------- ----- ------ - --- ------------- ---------- ------ ----------- ----- --
在创建 RedisPubSub
实例后,您可以使用它来创建 GraphQL 的 SubscriptionManager
:
----- - ------------------- - - -------------------------------- ----- ------------------- - --- --------------------- ------- ------- --
在上面的代码中,schema
是一个 GraphQL 的 Schema
实例,它定义了订阅的执行规则。您可以使用 graphql-tools 创建一个 Schema
对象:
----- - -------------------- - - ------------------------ ----- -------- - - ---- ------- - ----- ------- - ---- ------------ - ------------- -------- - - ----- --------- - - ------------- - ------------- - ---------- -- -- ------------------------------------- -------- --------- -- -------- -- -- - ----- ------ - ---------------------- --------- --------- --
在上面的代码中,Subscription.messageAdded
定义了订阅查询的执行规则。当有新的消息添加到 messageAdded
频道时,订阅将会触发。subscribe
方法返回一个 AsyncIterator
对象,它将自动监听 Redis 频道的更新。
现在您可以使用 SubscriptionManager
来订阅和发布消息了:
------------------------------ - ------ ------------- - ------------ - ---- - -- -- --- ----- ------- -- - -- ----- ------------------ ---- ------------------- - - ------------------------------ - ------------- - ----- ------- ------- - --
在上面的代码中,我们使用 SubscriptionManager.subscribe
方法订阅了 messageAdded
频道。一旦有新的消息添加到 messageAdded
频道中,我们的订阅回调函数将会被触发。
然后我们使用 pubsub.publish
方法向 messageAdded
频道发布了一条新的消息。这将会触发所有订阅了 messageAdded
订阅的客户端的回调函数。在本例中,我们的订阅将会返回 { data: { messageAdded: { text: 'Hello, world!' } } }
。
总结
graphql-redis-subscriptions-async-iterator
是一个非常实用的工具,可以帮助我们轻松地实现 GraphQL 的实时订阅功能。使用 Redis 来管理订阅和发布,可以帮助我们更好地管理服务器上的连接,提高应用的效率和稳定性。如果您正在构建一个基于 GraphQL 的应用程序,并且需要实时订阅数据,那么 graphql-redis-subscriptions-async-iterator
绝对是您的不二选择。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/60055b8481e8991b448d9199