在你的 redux 应用程序中哪里有套接字对象? [关闭]

Posted

技术标签:

【中文标题】在你的 redux 应用程序中哪里有套接字对象? [关闭]【英文标题】:Where to have the socket object in your redux app? [closed] 【发布时间】:2019-02-20 00:56:39 【问题描述】:

我正在使用 react、redux 和 socket.io 开发一个聊天应用程序。众所周知,redux 对于将某些状态传递给深层和嵌套组件非常有帮助。我喜欢这个想法,将一些 props 存储为 redux 状态,这些状态将传递给一些重度嵌套的组件。我正在使用socket.io-client 库来创建套接字对象。

我需要将创建的套接字对象传递给一些嵌套严重的组件,所以我正在考虑在 redux 状态下创建套接字对象,以便我可以在嵌套组件上轻松使用它。

这是一个好方法还是我应该做其他事情?

【问题讨论】:

【参考方案1】:

不,不是。

我们最近添加了Redux FAQ entry on where websockets should live in a Redux app。引用该条目:

中间件是 Redux 应用程序中持续连接(如 websocket)的正确位置,原因如下:

中间件存在于应用程序的整个生命周期中 与商店本身一样,您可能只需要整个应用程序都可以使用的给定连接的单个实例 中间件可以看到所有已调度的动作和调度动作本身。这意味着中间件可以采取已调度的操作并将其转换为通过 websocket 发送的消息,并在通过 websocket 接收到消息时调度新的操作。 websocket 连接实例不可序列化,因此它本身不属于存储状态

【讨论】:

示例总是很有帮助的标记,例如this。谢谢!

以上是关于在你的 redux 应用程序中哪里有套接字对象? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

以 redux 状态存储大数据 - 30,000 项

在 react-redux 应用程序中使用 JSONP

在同构 Redux 应用程序中在哪里设置 cookie?

React-Native + Redux + ImmutableJS内存泄漏

在你的类中有两个 System.Timer.Timer 对象并捕获异常

用亲身经历告诉你,在你的并发程序代码块中,最好最好不要有引用类型