`npm` 包 `redux-ably-server` 使用教程

阅读时长 6 分钟读完

1. 简介

redux-ably-server 是一个 npm 包,用于在服务端使用 Redux。它通过使用 Ably 实现了 Redux 的服务器端同步,以便在多个服务端实例(例如,多个 Node.js 进程,多个 Docker 容器)之间共享 Redux 状态数据。这个包的使用对于需要在多个服务器进程之间共享 Redux 状态数据,以及在服务端使用更加流行的 Redux 框架的开发人员来说尤为有用。

2. 安装

使用 npm 进行安装:

还需要在你的服务端应用中安装 ably 包:

3. 使用

使用 redux-ably-server 与 Redux 一起工作的步骤如下:

3.1 创建 Redux Store

使用 redux-ably-server,首先需要创建一个 Redux Store 实例。以下是一个示例代码:

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

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

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

在这里,我们使用 redux-ably-server 中的 reduxAblySyncMiddleware 来创建 Redux Store。

3.2 配置 Ably

在上一步中,我们创建了一个 Ably 实例 ably,并将其作为参数传递给了 reduxAblySyncMiddleware。要使这个 Redux Store 与 Ably 一起工作,我们还需要在 Ably 中创建一个频道(channel)。

以下是一个示例代码:

在这里,我们使用 ably.channels.get() 方法获取 ablyChannelName 对应的 Ably 频道对象。如果这个频道不存在,它将被自动创建。注意,这个名称可以是任何字符串,但是在所有实例之间必须保持一致。

3.3 连接 Redux Store 和 Ably

在创建 Redux Store 实例和 Ably 频道之后,我们需要连接它们。使用 redux-ably-server,我们可以通过调用 reduxAblySyncMiddleware 函数返回的 subscribe 函数来完成连接操作。

以下是一个示例代码:

在这里,我们使用 reduxAblySyncSubscribe() 函数将 Redux Store 和 Ably 频道相互连接。在这里,store 参数是前面创建的 Redux Store 实例,ablyChannel 参数是前面创建的 Ably 频道对象。调用 subscribe() 函数可以将 Redux Store 和 Ably 频道相互连接,并返回一个 unsubscribe() 函数,用于取消连接。

为了在服务端代码中保持 Redux Store 与 Ably 的同步,我们只需要让服务端代码一直运行,并在合适的时候调用 unsubscribe() 函数来断开连接。

4. 示例

下面是一个完整的使用示例代码:

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

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

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

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

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

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

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

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

该示例代码创建了一个 Redux Store 实例,使用了 redux-ably-server 中的 reduxAblySyncMiddleware,将其连接到了 Ably 频道,然后在指定的时间间隔内自增了计数器,并在每次更改后打印出新的状态。注意,此示例代码中的 unsubscribe() 函数未实际运行,因为服务端代码应该一直运行。

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

纠错
反馈