如何从 React 组件订阅 Redis 频道

Sha*_*mim 2 publish-subscribe redis node-redis reactjs

当 React 组件被挂载(即在 componentDidMount() 内)时,如何订阅它内的 redis 频道?

在互联网上几乎到处都可以看到使用 nodejs 实现的 redis,但找不到任何足够的提示如何在 React App 中使用它。

实际上,我想在不刷新页面的情况下更新我的电子商务仪表板(反应应用程序)数据。在后端,我使用了 djangorest 框架。当任何 API 被触发以更改任何数据时,python 代码将执行其工作并在特定 Redis 通道中发布消息。

我想从客户端(反应应用程序)订阅该频道,以便它可以使用此消息并实时更新其内容。

Ste*_*ane 6

由于明显的安全问题,反应组件(客户端技术)不应该能够访问 redis(服务器技术)。

如果您在服务器端使用 react 来通过 react using node 生成响应,则该节点应该进行此访问。

如果要从web前端(用web浏览器)访问redis,必须建立如下架构:

  • React 使用 websocket 访问服务器并侦听消息。
  • 节点js(使用socket.io)中的服务器,在aspnet核心(使用signalR)中的服务器访问redis并将更改传达给客户端,这要归功于websocket技术。

如果你想了解更多关于如何做的细节,你应该描述你在客户端使用的技术堆栈。

但简而言之,对于客户端,最好是使用 redux 可观察堆栈。在这种情况下,这将是一个史诗,它会在服务器通知某事时更新 redux 状态。如果您对 rxjs 不满意(这很好理解!),那么最简单的方法是使用 mobX ( https://mobx.js.org/README.html )

  • 我对这个世界不太了解,但 django 是一个 python Web 框架。由于 python 不是一种 Web 浏览器技术,我认为 django 对于 python 来说就像 asp.net 对于 dot net 一样,或者express 对于 Node 来说。但我发现允许 Web 前端访问 Redis 服务器非常不安全。我将成为基础设施管理员,除了夫妇或服务器应用程序之外,我将切断对 Redis 服务器的任何访问。 (2认同)