npm 包 @feathersjs/transport-commons 使用教程

什么是 @feathersjs/transport-commons

@feathersjs/transport-commons 是一个用于 Feathers.js 框架的通用传输库。它可以帮助前端开发者在编写 Feathers.js 应用程序时,更快地构建 APIs 和前端服务。其主要功能包括:

  • 使用 JSON、消息和 SocketIO 等多种传输类型。
  • 兼容 Feathers.js 中的所有客户端、服务和钩子。
  • 支持插件式的中间件和自定义的插件。
  • 提供一套简单的 API,易于使用和扩展。

如何安装和使用

在您的项目中,使用 npm 安装 @feathersjs/transport-commons:

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

然后,您可以使用该库的内置传输类型(如 SocketIO、JSON 和消息)之一,实现简单的数据交换。以下是使用 SocketIO 实现此操作的示例代码:

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

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

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

在这段代码中,我们建立了一个连接到本地主机上的 SocketIO 服务器。然后,我们配置了一个 Feathers 应用程序,该应用程序使用 @feathersjs/socketio-client 和 @feathersjs/transport-commons 的客户端和传输组件来创建客户端和服务端之间的通信通道。通过这种方式,我们可以使用 Feathers.js 的通用 API 与我们的 SocketIO 服务器进行交互。

深入理解

@feathersjs/transport-commons 的核心实现是一个 plugin 函数,该函数接受一个选项对象,可用于配置传输库的行为。该函数返回一个 Feathers 应用程序对象。本节将详细说明如何使用 @feathersjs/transport-commons 实现以下行为:

  • 如何添加自定义传输类型。
  • 如何使用钩子在传输过程中进行操作。
  • 如何使用中间件对请求进行附加处理。

添加自定义传输类型

默认情况下,@feathersjs/transport-commons 支持三种传输类型:JSON、消息和 SocketIO。但是,您可以通过实现自己的传输插件来添加更多的传输类型。以下是一个示例插件,它添加了一个新的 XML-RPC 传输类型:

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

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

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

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

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

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

该插件会将 'connection' 和 'disconnect' 事件绑定到 Feathers 应用程序对象上。当新的客户端连接到服务器时,该插件会在 socket 上创建一个新的 RPC 客户端,并将其存储在 socket.rpc 中。然后,该插件将调用由 feathers.configure() 提供的 @feathersjs/transport-commons 插件,使用 rpcTransport 方法来处理与新客户端的通信。

钩子操作

您可以使用钩子在传输过程中执行操作。以下是一个示例钩子,它使用使用 JWT 来验证客户端的身份:

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

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

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

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

该示例中,我们首先定义了一个名为 jwtAuthenticate 的函数,该函数接受一个 Feathers 应用程序,并返回一个新的 middleware 函数。当被调用时,这个中间件会检查在 params.token 中传入的 token 是否有效。如果无效,它将抛出一个错误。否则,它会通过调用 jwt.verify() 来解码 token,将解码的用户信息存储在 params.user 中,并将这个新的 context 对象返回。最后,我们会向 authenticate() 钩子添加此 middleware。

添加中间件

中间件是一种特殊的函数,它可以在请求处理之前或之后对请求进行操作。以下是一个示例中间件,它用于将 GUID 自动生成器附加到所有的服务方法:

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

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

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

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

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

该示例中,我们首先定义了两个分别负责创建和更新服务对象的中间件函数:generateGuid() 和 attachGuid()。generateGuid() 仅仅向请求参数中添加一个 $generateGuid 属性。然后,我们向 users 服务的 'create' 和 'update' 方法添加了相应的中间件操作。在实际执行请求处理之前,generateGuid() 将添加一个唯一的 GUID 标识符,而 attachGuid() 函数则负责在请求结果中附加该标识符。

总结

在本教程中,我们介绍了 @feathersjs/transport-commons - Feathers.js 框架的通用传输库。我们探讨了如何安装和使用该库,如何添加自定义传输类型,如何使用钩子在传输过程中执行操作,以及如何使用中间件对请求进行附加处理。希望这篇文章能够帮助您更好地理解 @feathersjs/transport-commons,并能够快速地在您的项目中使用它。

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


猜你喜欢

  • npm 包 @alinex/server 使用教程

    在前端开发中,Web 服务器是不可或缺的一个环节。而 @alinex/server 是一个基于 Node.js 的 Web 服务器,它提供了一组完整的工具链和开发框架,能够快速构建 Web 应用程序。

    5 年前
  • npm 包 @acter/gateway 使用教程

    前言 在现代的 web 开发中,前后端分离是一种非常流行的架构模式。随着微服务的普及,前端需要调用越来越多的接口。为了方便地管理这些接口并提供更高级别的功能,@acter/gateway 库应运而生。

    5 年前
  • npm 包 @feathersjs/rest-client 使用教程

    什么是 @feathersjs/rest-client? @feathersjs/rest-client 是一个小型、简单、用于创建使用 Feathers REST API 的客户端库。

    5 年前
  • npm包@feathersjs/primus-client使用教程

    前言 前端开发是现代web开发中的一项重要任务,而技术的不断发展也使得前端技术越来越复杂,需要不断学习和研究。在前端开发中,npm包是一个非常常用的工具,因为它可以为开发者提供各种各样的功能模块,以便...

    5 年前
  • npm 包 @feathersjs/primus 使用教程

    简介 Feathers.js 是一个现代化的、全栈式的 Web 应用框架,它可以用于构建 REST 和实时的 API。@feathersjs/primus 是 Feathers.js 中实现 WebS...

    5 年前
  • npm 包 @feathersjs/commons 使用教程

    简介 在前端应用开发中,我们经常需要使用各种 npm 包来帮助我们完成某些功能。其中,@feathersjs/commons 是一个在 FeathersJS 中使用的 npm 包,它提供了一系列常用的...

    5 年前
  • 使用 babel-plugin-transform-es2015-modules-simple-commonjs 进行前端开发

    在前端 Web 开发领域,使用前端编译工具和库已成为了日常开发环境中的必不可少的一部分。而其中之一的 babel-plugin-transform-es2015-modules-simple-comm...

    5 年前
  • npm 包 dcfisk 使用教程

    在前端开发过程中,我们经常需要使用各种 npm 包来简化开发流程。而 dcfisk 是一个非常实用的 npm 包,主要用于格式化和验证数字货币地址。本篇文章将介绍如何使用 dcfisk 对数字货币地址...

    5 年前
  • npm 包 @aaa-backend-stack/storage 使用教程

    前言 在 Web 应用开发中,数据存储是非常重要的一环。而在前端开发中,要实现数据的本地存储和上传等操作,需要借助于一些工具。本文将介绍如何使用 npm 包 @aaa-backend-stack/st...

    5 年前
  • npm 包 @aaa-backend-stack/polyfills 使用教程

    介绍 在使用 JavaScript 编写前端应用程序的过程中,我们经常需要使用一些标准 API,比如 Array.includes 或者 Promise。而这些 API 并不是所有 JavaScrip...

    5 年前
  • npm包@atomist/sdm-pack-event-relay使用教程

    什么是@atomist/sdm-pack-event-relay @atomist/sdm-pack-event-relay是一个用于在不同的软件系统之间分发事件的npm包。

    5 年前
  • npm 包 @ampproject/worker-dom 使用教程

    前言 随着 Web 应用的复杂度不断提升,前端的性能和用户体验也变得更加重要。其中,性能优化是提高 Web 应用用户体验的重要手段之一。而由于 DOM 操作是前端应用的核心操作之一,因此提高 DOM ...

    5 年前
  • npm 包 @activeledger/activecore 使用教程

    简介 @activeledger/activecore 是一个企业级区块链平台,具有高度可扩展性和可自定义性。它的核心功能包括可靠的交易处理、多节点同步、智能合约以及其他高级功能。

    5 年前
  • npm 包 @2fd/graphtype 使用教程

    在前端开发领域中,有很多工具和框架能够协助开发者更快、更高效地完成相应的工作。其中,npm 是一个非常重要的工具,它提供了丰富的工具库和包管理功能,可以让开发者快速地查找和安装需要的库和工具。

    5 年前
  • npm 包 @0x/contracts-test-utils 使用教程

    前言 在前端开发中,使用现成的 npm 包可以大大减少我们的工作量,减少重复造轮子的时间。@0x/contracts-test-utils 是一个非常优秀的 npm 包,可以帮助开发者进行智能合约的测...

    5 年前
  • npm 包 @amazee/persistgraphql 使用教程

    前言 随着现代 Web 应用的日益复杂,前端代码也变得越来越庞大。同时,前后端分离的趋势也促使前端代码变得越来越复杂。为了解决这个问题,GraphQL 应运而生。GraphQL 是一个强类型的查询语言...

    5 年前
  • npm 包 @akashaproject/geth-connector 使用教程

    前言 随着区块链技术的发展,其应用场景越来越广泛。在区块链应用开发过程中,经常需要与以太坊节点进行交互,而 @akashaproject/geth-connector 是一个非常有用的 npm 包,它...

    5 年前
  • npm 包 @aaa-backend-stack/test-environment 使用教程

    在现代的 web 开发中,测试环境的重要性不言而喻。@aaa-backend-stack/test-environment 是一个快速搭建前端端到端测试环境的 npm 包,它为前端开发人员提供了强大的...

    5 年前
  • npm 包 @a-a-game-studio/aa-components 使用教程

    介绍 在前端开发中,我们经常需要使用一些通用组件来提高代码复用率。npm 是前端开发过程中使用最广泛的包管理工具之一。今天,我们要介绍一个 npm 包 @a-a-game-studio/aa-comp...

    5 年前
  • npm 包 @a-a-game-studio/aa-classes 使用教程

    引言 在前端开发中,为了提高开发效率,我们经常会使用一些封装好的工具库或框架。而 npm 是一个非常流行的包管理工具,其中包含了数量庞大的开源库,可以方便地进行调用和使用。

    5 年前

相关推荐

    暂无文章