Redux 添加 websocket 作为 prop

Posted

技术标签:

【中文标题】Redux 添加 websocket 作为 prop【英文标题】:Redux add websocket as prop 【发布时间】:2017-11-14 07:38:17 【问题描述】:

我已经用需要的单个websocket 连接对应用程序做出反应,所以我从redux 操作连接websocket 并尝试将websocket 实例设置为prop;所以我可以在我的应用程序中访问这个实例

const initWebSocket = uri => 
    const ws = new WebSocket(uri)
    return 
        type: WEB_SOCKET_CONNECTION_SUCCESS,
        ws
    

// reducer
export default function (state = initialState, action) 
    switch (action.type) 
        case WEB_SOCKET_CONNECTION_SUCCESS:
            return ...state, ws: action.ws
        default:
            return state;
    

但是 aster 状态变化 ws 是空对象

【问题讨论】:

我是否建议不要保留 websocket 实例,而是添加 SEND_MESSAGE、ON_RECIEVE_MSG 和 CLOSE_WEBSOKET 作为 redux 操作? 【参考方案1】:

从技术上讲,将 Websocket 连接实例放入 Redux 存储中是可行的,但这是个坏主意。 Redux 文档discourage putting anything that's not serializable in the Redux store。

在 Redux 应用程序中,Websocket 和其他持久连接对象的正确位置是在中间件内部。事实上,已经有dozens of existing middleware for managing Websocket connections 可用了。

【讨论】:

以上是关于Redux 添加 websocket 作为 prop的主要内容,如果未能解决你的问题,请参考以下文章

为 redux 承诺的 Websocket

使用 Websockets 的 Redux-thunk

Redux+Websockets:为啥要使用中间件来管理这个?

WebSocket 服务器中的 Redux

使用来自 websocket 的数据初始化 Redux 状态

使用 React、Redux 和 Websocket 处理请求