npm 包 graphql-redis-subscriptions 使用教程

阅读时长 7 分钟读完

GraphQL 是一种新型的数据查询语言,它可以通过定义一个类型系统来描述数据,并提供强大的查询能力。对于实时数据的处理,GraphQL-Redis-Subscriptions 是一个非常好的解决方案。

在本文中,我们将介绍如何使用 npm 包 graphql-redis-subscriptions 来搭建一个实时数据系统,并且通过示例代码来演示其功能。

1. 安装

在使用之前,请确保已安装 Redis。

2. 创建 PubSub 实例

PubSub 是一种常见的模式,用来在不同的应用程序之间传递消息。在 GraphQL-Redis-Subscriptions 中,PubSub 用于实现实时订阅。创建一个 PubSub 实例很简单:

3. 配置 Subscription

接下来,我们需要定义 Subscription 的类型。

-- -------------------- ---- -------
----- - ---------- - - ---------------------------------
----- - ------ - - ---------------------------------
----- - -------------------- - - ---------------------------------
----- - ----------- - - ---------------------------------------

----- ----- - --- --------
----- ------ - --- -------------
  ----------- ------
---

----- -------- - -
  ---- ------------ -
    -------------- --------- ----
  -

  ---- ---- -
    --- ----
    -------- -------
  -
--

----- --------- - -
  ------------- -
    -------- -
      ---------- -----------
        -- -- ---------------------------------
        --------- ---------- -- -
          ------ ------------- --- ----------------
        -
      --
      -------- --------- ---- -- -
        ------ --------
      --
    --
  --
--

----- ------ - ----------------------
  ---------
  ----------
---

这里,我们定义了一个 Subscription 类型,其中包含一个名为 newPost 的订阅。我们使用 withFilter 封装 pubsub.asyncIterator("NEW_POST"),实现对指定话题的过滤。

接下来,我们来看看,如何在 Mutation 中向 Subscription 发布消息。

-- -------------------- ---- -------
----- - ---------- - - ---------------------------------
----- - ------ - - ---------------------------------
----- - -------------------- - - ---------------------------------
----- - ----------- - - ---------------------------------------

----- ----- - --- --------
----- ------ - --- -------------
  ----------- ------
---

----- -------- - -
  ---- ----- -
    ------ ------
    -------- ------ ----
  -
  ---- -------- -
    ------------------- --------- ----
  -
  ---- ------------ -
    -------------- --------- ----
  -
  ---- ---- -
    --- ----
    -------- -------
  -
--

--- ----- - -
  - --- -- -------- ------- ------- --
  - --- -- -------- ------- --------- --
--

----- --------- - -
  ------ -
    ------ -- -- ------
    ----- --- - -- -- -- ----------------- -- ------- --- ----
  --
  --------- -
    ----------- --- - ------- -- -- -
      ----- ---- - - --- ------------ - -- ------- --
      -------------------------- - ------ ----------- ------- ---
      -----------------
      ------ -----
    --
  --
  ------------- -
    -------- -
      ---------- -----------
        -- -- ---------------------------------
        --------- ---------- -- -
          ------ ------------- --- ----------------
        -
      --
      -------- --------- ---- -- -
        ------ --------
      --
    --
  --
--

----- ------ - ----------------------
  ---------
  ----------
---

当调用 createPost 的时候,我们同时也发布了一个 NEW_POST 的事件。这个事件包含了 post 的 id 和 content。

现在,我们打开 GraphQL Playground,输入以下 Mutation:

查询可以得到如下结果:

同时,我们还可以打开一个新的窗口,输入以下 Subscription:

这样我们就可以看到所有的新消息。当我们再次执行 Mutation 的时候,新消息也会立刻发布到这个 Subscription 上。

总结

在这篇文章中,我们介绍了如何使用 GraphQL-Redis-Subscriptions 这个 npm 包来实现实时订阅。我们学习了如何创建 PubSub 实例,以及如何配置 Subscription 和发布消息。掌握这些知识点,我们可以很容易地搭建一个实时数据系统,并且能够方便地处理实时数据。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5eedae68b5cbfe1ea0610e34

纠错
反馈