npm 包 ssb-replication-graphql 使用教程

阅读时长 6 分钟读完

介绍

ssb-replication-graphql 是基于 Secure Scuttlebutt(Secure Scuttlebutt 是一个点对点的去中心化社交网络协议)中的复制协议对 GraphQL 的实现。该 npm 包实现了一个 GraphQL 的服务器,给客户端提供 GraphQL API,并允许客户端读取 SSD(Secure Scuttlebutt 数据)。

本文将为大家介绍如何使用 ssb-replication-graphql 包,实现一个基础的节点间数据同步。

安装

你可以使用 npm 安装 ssb-replication-graphql

实现

使用 ssb-replication-graphql 实现同步 data 数据到其它节点。

创建 Secure Scuttlebutt

首先,我们需要使用创建 Secure Scuttlebutt(SSB)的包,为数据同步做好准备。

启动 GraphQL 服务器

在启动逻辑中,我们需要让 ssb-replication-graphql 接管我们实例化的 sbot 实例,然后启动 GraphQL 服务器。

这样,我们就已经启动了 GraphQL 服务器且让它接管了 SSB 实例 sbot

定义 GraphQL Schema

现在让我们通过 GraphQL 风格定义一个 Schema,该 Schema 将用于定义我们数据的结构。

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

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

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

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

在这个例子中,我们定义了一个 Post 类型,该类型将实现 SsbMessage 接口。我们还定义了两个查询(Query)和一个变更(Mutation),用来获取或者发布数据。

创造完 schema.js 后,让我们拿到它并初始化 ApolloServer:

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

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

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

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

在调用 makeExecutableSchema() 函数时传递了来自 ssbSchema.createResolvers() 函数的 resolvers 参数,Resolver 需要定义怎样获取特定的数据。

这样,你就定义了你的 GraphQL 服务器。

启动服务器

在代码编写完之后,让我们来启动服务器将我们的配置和模式实例化,并让服务器监听给定端口:

使用

现在,我们可以使用 GraphQL 客户端来访问 GraphQL API。

查询

下面是如何使用查询函数检索一条信息:

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

这将返回与 id 属性为“abcd123456”匹配的信息。注意:选择的属性必须在类型定义中声明。

变更

现在,让我们创建一个新的信息:

这将发布新的信息并返回其 ID。

结论

在这篇文章中,我们学习了如何使用 ssb-replication-graphql 包实现基础数据同步,包括:

  • 创建并启动一个 SSB 实例
  • 定义 GraphQL Schema
  • 用 ApolloServer 将 GraphQL Schema 转化为服务器
  • 查询和变更,从客户端使用
  • 启动服务器,使 GraphQL API 可供使用

使用 ssb-replication-graphql 包可以方便地实现 SSB 节点间数据同步,让我们更专注于业务逻辑。希望这篇文章能够为你提供有价值的指导。

示例代码

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

纠错
反馈