您的redux应用程序中的哪个套接字对象?

Moh*_*ziz 3 javascript sockets socket.io reactjs redux

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

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

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

mar*_*son 7

不,这不对。

我们最近在Redux应用程序中添加了关于Websockets应该存放在哪里Redux FAQ条目。引用该条目:

出于以下几个原因,中间件是Redux应用程序中诸如websockets之类的持久连接的正确地方:

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

  • 示例总是有用的标记 [this](https://gist.github.com/markerikson/3df1cf5abbac57820a20059287b4be58)。谢谢! (2认同)