如何在 Redux 中集成 Websockets

阅读时长 6 分钟读完

在现代 Web 应用中,Websockets 已经成为了一种非常重要的通信协议,它可以让 Web 应用实现实时通信、实时更新等功能。而在 Redux 中集成 Websockets,可以让我们更加方便地管理应用的状态,并且可以让我们在 Websockets 连接状态发生变化时,自动更新应用的状态。

本文将介绍如何在 Redux 中集成 Websockets,并提供示例代码。

Redux 中的 Websockets

在 Redux 中集成 Websockets,需要使用一个叫做 redux-websocket 的中间件。这个中间件可以让我们在 Redux 中使用 Websockets,而且还可以让我们在 Websockets 连接状态发生变化时,自动更新应用的状态。

首先,我们需要安装 redux-websocket

然后,在 Redux 中使用 redux-websocket,需要在 applyMiddleware 中添加这个中间件:

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

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

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

在上面的代码中,我们创建了一个 websocketMiddleware,并且指定了 Websockets 的地址。然后,在 applyMiddleware 中添加这个中间件,就可以在 Redux 中使用 Websockets 了。

Websockets 连接状态的更新

在 Websockets 中,连接状态有四种:CONNECTINGOPENCLOSINGCLOSED。我们可以通过 redux-websocket 提供的 WEBSOCKET_OPENEDWEBSOCKET_CLOSEDWEBSOCKET_ERRORWEBSOCKET_MESSAGE 等 action 类型,来更新应用的状态。

例如,我们可以在 Redux 中添加一个 websocket 的 reducer,来处理 Websockets 连接状态的更新:

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

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

在上面的代码中,我们定义了一个 websocketReducer,用来处理 Websockets 连接状态的更新。当 Websockets 连接状态发生变化时,这个 reducer 会被调用,然后更新应用的状态。

示例代码

下面是一个完整的示例代码,演示如何在 Redux 中集成 Websockets:

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

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

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

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

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

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

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

在上面的代码中,我们创建了一个 websocketMiddleware,并且指定了 Websockets 的地址。然后,我们定义了一个 websocketReducer,用来处理 Websockets 连接状态的更新。最后,我们创建了一个 store,并且向这个 store 中发送了一个 Websockets 消息。

当我们运行上面的代码时,可以在控制台中看到应用的状态发生了变化,而且 Websockets 消息也被成功地发送了。这就是在 Redux 中集成 Websockets 的基本用法。

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

纠错
反馈