在 Redux 中存储 websocket(通道)连接对象

Posted

技术标签:

【中文标题】在 Redux 中存储 websocket(通道)连接对象【英文标题】:Storing websocket (channels) connection objects in Redux 【发布时间】:2016-06-28 15:46:56 【问题描述】:

我想在我的 redux 应用程序中使用 websocket,但在存储连接对象(phoenix 通道)时遇到了问题。

我有一个动态集合,可以添加和删除项目。当用户添加一个项目时,应用程序应该基于连接、订阅和存储创建一个新的凤凰频道,因为我必须在它上面做一些事情(例如,当用户删除一个项目时,我必须在频道上调用一个方法 leave())。不幸的是,redux 中的 store 都是不可变的,所以没有办法处理这个问题。任何帮助,将不胜感激。

【问题讨论】:

【参考方案1】:

绝对不要把它放在商店里。根据Redux FAQ,只有可序列化的数据才能进入存储。放置持久连接对象之类的标准位置是在中间件内部。而且,事实上,有几十个现有的中间件证明了这种方法,其中大多数都列在redux-ecosystem-links 上。您应该可以使用其中的一些作为示例。

【讨论】:

以上是关于在 Redux 中存储 websocket(通道)连接对象的主要内容,如果未能解决你的问题,请参考以下文章

Websocket 事件在 React 应用程序中接收旧的 redux 状态

Redux 架构中的自定义 Websocket

在 MVC 控制器中打开 websocket 通道

WebSocket 服务器中的 Redux

Redux 添加 websocket 作为 prop

在 Redux Saga 中重用 websocket 连接对象