npm 包 express-graphql-subscriptions 使用教程

阅读时长 6 分钟读完

前言

GraphQL 是一种新的数据接口语言,相比于传统的 RESTful 接口更为灵活和可定制。同时,GraphQL 也提供了实时数据更新的能力。express-graphql-subscriptions 是一款通过将 GraphQL 和 WebSocket 相结合来提供实时数据更新的 npm 包。在这篇文章中,我们将学习如何使用它。

安装

首先,我们需要在我们的项目中安装 express-graphql-subscriptions 包。可以使用 npm 来完成安装:

配置

为了使用 express-graphql-subscriptions,我们需要将它与 GraphQL Server 和 WebSocket 结合使用。下面是一个简单的例子:

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

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

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

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

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

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

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

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

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

需要注意的是,subscriptionManagercreateSubscriptionServer 均需要使用的是 PubSub 对象。

同时,需要注意 SubscriptionManager 的自定义配置,包括 setupFunctionsonOperation。这些内容超出本文的讨论范围,可以参考官方文档。

使用

在我们的 GraphQL schema 中,我们可以定义一些 subscription 类型,例如:

这个 subscription 类型指定了,当博客文章被添加时我们将会得到一个 Post 类型的订阅消息。

在我们的 mutation 中,我们可以向服务器发送实时消息,例如:

在我们的 resolver 中,可以使用 pubsub.publish 方法来向 WebSocket Server 发送消息。例如:

在客户端,我们可以使用 subscriptions-transport-ws 以及 Apollo Client 来链接 WebSocket Server,并接收实时消息,例如:

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

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

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

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

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

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

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

结论

通过使用 express-graphql-subscriptions,我们可以在我们的 GraphQL Server 中添加实时更新功能,这提高了我们应用程序的实时性和交互性,从而为用户提供更好的体验。虽然本文只是简单介绍了如何使用 express-graphql-subscriptions,但是相信经过学习,您已经可以愉快的使用它了。

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

纠错
反馈