首页 > 解决方案 > 在 react/redux 应用程序中管理 webRTC 状态(流)

问题描述

我正在开发一个带有反应的视频聊天应用程序,并使用 redux 进行状态管理。目前在 webRTC 中使用 agora。随着 webRTC 相关事件的发生(流被添加、删除等等),状态应该被更新并发送到所有需要/依赖它的组件。

然而,单独的 redux 并不意味着这个。正如这个 SO questionDan Abramov(制造商本人)所讨论的那样,redux 并不适用于类,因此存储 webRTC 流是一个坏主意。

我想我应该手动存储和管理自己的 webRTC 状态(某处,idk where

尽管如此,我还是很难理解如何自己存储 webRTC 流:

  1. 我相信使用上下文 API 将导致我的所有组件在每次流更改/添加/删除/发生任何其他相关事件时呈现。
  2. 在 react 函数组件上管理 webRTC 状态将很快成为一场噩梦,因为我必须在顶层进行,并且几乎在任何地方都将其传递下去。
  3. redux-saga 被认为是一个潜在的救星,但我对此有点陌生,我不清楚这有什么帮助,因为它似乎主要处理副作用和异步调用。我需要一个并行商店(AFAI 了解)

底线:

有人可以给出一个好的和详细的解释,或者给我一个很好的代码库吗?

标签: reactjstypescriptreduxwebrtcagora-web-sdk-ng

解决方案


我在 redux-saga 文档中找到了一个很好的基本示例代码,它管理来自 websocket 的事件——这与来自 webRTC 客户端的事件没有太大区别。

https://redux-saga.js.org/docs/advanced/Channels.html


推荐阅读