npm 包 relay-classic-subscriptions 使用教程

1. 前言

现今的 web 应用场景越来越复杂,需要应对的数据也变得越来越多。传统的 RESTful API 往往会面临一些挑战,例如数据量变得越来越大,渲染速度变得越来越慢等。GraphQL 就成了一个解决这些问题的好方案。

Relay 是 Facebook 内部最早开发的针对 React 的 GraphQL 客户端。Relay 与 GraphQL 相辅相成,能够帮助开发者更轻松地发起请求并处理返回的数据。

本文将针对 Relay 中的 Subscription,介绍如何通过使用 npm 包 relay-classic-subscriptions 来实现。

2. 什么是 Subscription

在 GraphQL 中,Subscription 用于订阅一些与后端相关的事件,例如新建用户数据、上传图片、更新等等。与 Query 和 Mutation 不同,Subscription 返回的不是一次性的结果数据,而是随着事件不断发生的新数据。

3. 为何使用 relay-classic-subscriptions

Relay 本身并不提供 Subscription 的实现方式,因此我们需要借助一些第三方开源工具库。其中 relay-classic-subscriptions 是一个相对比较稳定的工具库,适用于 Relay Classic 的版本。

其主要功能是:通过与 graphql-subscriptions 结合使用,实现 Subscription 的动态响应。

4. 使用教程

这里我们将针对一个简单的例子来演示如何使用 relay-classic-subscriptions 来实现实时的服务器端推送消息至前端。

4.1 使用 graphql-subscriptions

首先,我们需要在后台服务中引入 graphql-subscriptions 包。该包提供了与 graphql-tools 所提供的订阅解析器一样的 API。

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

接着,我们需要创建 SubscriptionManager 对象,用于处理 Subscription 请求。

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

其中,我们需要将 GraphQL 的 schema 以及一个 setupFunctions 集合传递给 SubscriptionManager 对象。setupFunctions 具体说明下面会介绍。

4.2 安装 relay-classic-subscriptions

接着,我们需要将 relay-classic-subscriptions 包安装至前端项目中。

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

4.3 前端代码

在前端代码中使用 relay-classic-subscriptions,需要以下两个步骤:

  1. 创建一个 SubscriptionDescriptor。
----- ---------------------- - -
  ------------- -- ------- ------------ -------- ---
  ---------- -- ------- ------------ --------- ---
  -------- ------- -- --------------------- -----------------
  ------- --------- -- -
    --------------------- ----- -----------------------------
  --
--

以上代码中,subscription 和 variables 分别对应我们要监听的事件和提供代码所需要的参数。

onError 和 onNext 回调函数在监听到事件时会被调用。其中,onNext 负责处理接收到的数据。

  1. 启动 Subscription
----- - ------------------- - - -------------------------

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

以上代码中,我们使用 requestSubscription 来启动 Subscription。其中,environment 对应一个运行中的 Relay 环境,subscriptionDescriptor 则是 SubscriptionDescriptor 对象。

4.4 后端代码

回头看第 4.1 节中的 setupFunctions,它包含一个数组,每一项都是一个函数。这些函数用于处理 Subscription 的数据查询。

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

在 setupFunctions 中,我们通过获取 appId 参数创建了一个 SubscriptionIterator。mySubscriptionIterator 负责监听服务端推送的数据事件,并反馈给 SubscriptionManager。

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

5. 总结

relay-classic-subscriptions 使得实现基于 Subscription 的 Relay 程序相对简单。我们能用它来监听后台运行中的事件并实时向前端推送数据更新。通过本篇文章的学习,希望能够帮助读者更好地利用 Relay 进行开发。

6. 示例代码

前端代码:

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

后端代码:

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

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

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

全代码实现可以参考:Relay Subscription Example

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/60055b0f81e8991b448d8b94


猜你喜欢

  • npm 包 ch3ck 使用教程

    简介 npm 包 ch3ck 是一个用于检查代码风格的工具。它可以检查 JavaScript、CSS 和 HTML 代码是否符合规范,并提供了一些自定义规则。 安装 要使用 ch3ck,首先需要在你的...

    2 年前
  • npm 包 klas-file-downloader 使用教程

    在前端开发中,文件下载是经常用到的功能之一。而 npm 包 klas-file-downloader 则为我们提供了方便快捷的文件下载方式。下面将介绍 npm 包 klas-file-download...

    2 年前
  • npm 包 sauce-test-runner 使用教程

    简介 sauce-test-runner 是一个基于 Node.js 的 npm 包,它提供了一种简单的方式来在 Sauce Labs 平台上运行你的前端测试,并提供了展示测试结果的报告。

    2 年前
  • npm 包 ngx-auto-complete 使用教程

    在前端开发过程中,搜索框的自动补全功能是很实用的,而 ngx-auto-complete 是一个非常好用的 npm 包,它提供了简单易用的自动补全功能。 安装 ngx-auto-complete 首先...

    2 年前
  • npm 包 taylord-ui 使用教程

    介绍 taylord-ui 是一款基于 React 的 UI 组件库。该组件库提供了一系列高质量、易用的 UI 组件,开发者可以通过快速拼装这些组件来构建页面,从而提高开发效率。

    2 年前
  • npm 包 aceeng-autocomplete 使用教程

    aceeng-autocomplete 是一个基于 JavaScript 的自动补全库,可以用于前端开发中的输入框,提供智能化的输入提示和自动完成功能。本文将介绍如何使用 npm 包 aceeng-a...

    2 年前
  • npm 包 rando-tile 使用教程

    在前端开发中,我们经常需要使用到随机生成数据的场景,比如在页面设计中需要用到随机的图片或者颜色,因此我们需要使用一些工具来处理这些数据生成的需求。npm 包 rando-tile 就是这样一款工具,它...

    2 年前
  • npm 包 argv-to-list 使用教程

    在前端开发中,我们不可避免地需要与命令行打交道,而 Node.js 中提供的 process 对象就是我们处理命令行参数的利器。然而,当参数多了之后,直接用 process 中的 argv 数组处理确...

    2 年前
  • npm 包 fp-curry-n 使用教程

    npm 包 fp-curry-n 使用教程 在前端开发中,函数式编程已经越来越受到关注。函数式编程具有模块化、可重用性、可维护性、可测试性等好处。在函数式编程中,柯里化是一个很重要的概念。

    2 年前
  • npm 包 hain-plugin-everything 使用教程

    什么是 hain-plugin-everything hain-plugin-everything 是一个基于 hain 的 npm 包,适用于 Windows 平台。

    2 年前
  • npm 包 ng-material-ng-moment-datetimepicker 使用教程

    在 Angular 前端开发中,时间格式的处理是非常重要的一个环节。而 ng-material-ng-moment-datetimepicker 这个 npm 包则提供了一种非常方便的方式来处理时间格...

    2 年前
  • npm 包 domotz-ip-address 使用教程

    在前端开发中,我们经常需要获取用户的 IP 地址,以便进行一些统计、分析或者安全验证等操作。而在 Node.js 环境下,则可以通过使用一个叫做 domotz-ip-address 的 npm 包来获...

    2 年前
  • npm 包 pass-maker 使用教程

    什么是 pass-maker? pass-maker 是一款基于 Node.js 的 npm 包,它能够快速生成各种类型的密码,并且可以按照一定的规则进行定制,以满足不同用户的需求。

    2 年前
  • npm 包 repeatjoinstring 使用教程

    随着前端开发的不断发展,我们使用的工具也越来越多。其中,npm 包已成为前端开发中一个不可或缺的部分。npm 包能够帮助我们更方便高效地管理和引用第三方代码,节省开发时间和精力,也能让我们更好地了解和...

    2 年前
  • npm 包 selectron-test 使用教程

    前言 在前端开发中,我们经常需要通过自动化测试来保证开发的质量和稳定性。而在进行自动化测试时,我们需要借助一些工具来帮助我们完成测试,其中一个常用的工具就是 selectron-test。

    2 年前
  • npm包 condor-validate 使用教程

    #npm包 condor-validate 使用教程 在前端开发时,经常需要进行数据验证。因此,使用一个好的验证工具可以大大提高开发效率。这篇文章将介绍一个npm包 condor-validate 的...

    2 年前
  • npm 包 react-drag-and-zoom 使用教程

    如果你经常在前端开发中使用 React,你或许会遇到需要实现图片的拖拽与放大缩小功能的场景。此时你不应该重写这个功能并且浪费时间,而是应该通过 npm 包 react-drag-and-zoom 来优...

    2 年前
  • npm 包 stiloso 使用教程

    前言 stiloso 是一个非常简单易用的 CSS in JS 库。它采用可读性和可维护性非常高的模板字符串,为前端开发者提供了一种全新的样式编写方式。本文将详细介绍 stiloso 的使用方法,以及...

    2 年前
  • npm 包 wannasky-test 使用教程

    npm 是前端开发必不可少的工具,它可以方便地管理各种包,提高开发效率。在众多 npm 包中,wannasky-test 是一个强大的测试工具,可以对代码进行全面的测试,并生成详细的测试报告。

    2 年前
  • npm 包 fp-curry 使用教程

    简介 fp-curry 是一个 npm 包,它提供了一个高阶函数 curry,帮助我们更轻松地进行函数柯里化。 柯里化是一种函数式编程技巧,它可以将一个接受多个参数的函数,转换为一个只接受单个参数的函...

    2 年前

相关推荐

    暂无文章