在现代 Web 应用中,Websockets 已经成为了一种非常重要的通信协议,它可以让 Web 应用实现实时通信、实时更新等功能。而在 Redux 中集成 Websockets,可以让我们更加方便地管理应用的状态,并且可以让我们在 Websockets 连接状态发生变化时,自动更新应用的状态。
本文将介绍如何在 Redux 中集成 Websockets,并提供示例代码。
Redux 中的 Websockets
在 Redux 中集成 Websockets,需要使用一个叫做 redux-websocket 的中间件。这个中间件可以让我们在 Redux 中使用 Websockets,而且还可以让我们在 Websockets 连接状态发生变化时,自动更新应用的状态。
首先,我们需要安装 redux-websocket:
npm install --save redux-websocket
然后,在 Redux 中使用 redux-websocket,需要在 applyMiddleware 中添加这个中间件:
-- -------------------- ---- ------- ------ - ------------ --------------- - ---- -------- ------ ------------------------- ---- ------------------ ----- ------------------- - ------------------------------------------------- ----- ----- - ------------ -------- ------------------------------------ --
在上面的代码中,我们创建了一个 websocketMiddleware,并且指定了 Websockets 的地址。然后,在 applyMiddleware 中添加这个中间件,就可以在 Redux 中使用 Websockets 了。
Websockets 连接状态的更新
在 Websockets 中,连接状态有四种:CONNECTING、OPEN、CLOSING、CLOSED。我们可以通过 redux-websocket 提供的 WEBSOCKET_OPENED、WEBSOCKET_CLOSED、WEBSOCKET_ERROR、WEBSOCKET_MESSAGE 等 action 类型,来更新应用的状态。
例如,我们可以在 Redux 中添加一个 websocket 的 reducer,来处理 Websockets 连接状态的更新:
-- -------------------- ---- -------
----- ------------ - -
------- ---------------
-------- -----
--
-------- ---------------------- - ------------- ------- -
------ ------------- -
---- -------------------
------ -
---------
------- ------------
--
---- -------------------
------ -
---------
------- ---------------
--
---- ------------------
------ -
---------
-------- -----------------------
--
---- --------------------
------ -
---------
-------- -----------------------
--
--------
------ ------
-
-在上面的代码中,我们定义了一个 websocketReducer,用来处理 Websockets 连接状态的更新。当 Websockets 连接状态发生变化时,这个 reducer 会被调用,然后更新应用的状态。
示例代码
下面是一个完整的示例代码,演示如何在 Redux 中集成 Websockets:
-- -------------------- ---- -------
------ - ------------ --------------- - ---- --------
------ ------------------------- ---- ------------------
----- ------------------- - -------------------------------------------------
----- ------------ - -
------- ---------------
-------- -----
--
-------- ---------------------- - ------------- ------- -
------ ------------- -
---- -------------------
------ -
---------
------- ------------
--
---- -------------------
------ -
---------
------- ---------------
--
---- ------------------
------ -
---------
-------- -----------------------
--
---- --------------------
------ -
---------
-------- -----------------------
--
--------
------ ------
-
-
----- ----- - ------------
-----------------
------------------------------------
--
------------------ -- -
------------------------------
---
----------------
----- -----------------
-------- -
-------- ------- -------------
--
---在上面的代码中,我们创建了一个 websocketMiddleware,并且指定了 Websockets 的地址。然后,我们定义了一个 websocketReducer,用来处理 Websockets 连接状态的更新。最后,我们创建了一个 store,并且向这个 store 中发送了一个 Websockets 消息。
当我们运行上面的代码时,可以在控制台中看到应用的状态发生了变化,而且 Websockets 消息也被成功地发送了。这就是在 Redux 中集成 Websockets 的基本用法。
Source: FunTeaLearn,Please indicate the source for reprints https://funteas.com/post/67d94a4da941bf71340dfd57