【问题标题】:How to subscribe a Redis channel from a React Component如何从 React 组件订阅 Redis 频道
【发布时间】:2020-02-19 13:19:03
【问题描述】:

如何在 React 组件内(即在 componentDidMount() 内)订阅 Redis 通道?

在互联网上几乎所有地方我都能看到使用 nodejs 实现的 redis,但找不到任何 足够的提示如何在 React App 中使用它。

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

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

【问题讨论】:

    标签: reactjs redis publish-subscribe node-redis


    【解决方案1】:

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

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

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

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

    如果您想了解更多详细信息,请描述您在客户端使用的技术堆栈。

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

    【讨论】:

    • 好的,请您提供任何提示,如何使用 Redis 频道中发布的消息实时更新我的​​组件?
    • 正如我提到的,描述您在客户端拥有的堆栈,以及您使用的服务器技术
    • @shamim 只需在 Google 上搜索 react redux "redis" django,您就会发现很多教程博客。但是请注意,从技术上讲,有两个完全独立的任务:一方面是 Django+Redis,另一方面是 Django+react+redux。您不需要需要涵盖所有内容的教程,只需两个好的教程,每个任务一个。这将提供更多搜索结果,以便您可以更好地选择教程。
    • 好的,但是我认为您没有遵循 Stephane 的建议“由于明显的安全问题,反应组件(客户端技术)不应该能够访问 redis(服务器技术)”,这是一个大错误.所以如果你没有真正遵循它,你接受了他的答案有点奇怪! :)
    • 我不太喜欢这个世界,但 django 是一个 python web 框架。由于 python 不是网络浏览器技术,我假设 django 是用于 python 的,asp.net 是用于 dot net 的,或者 express 是用于节点的。但是我发现允许 Web 前端访问 redis 服务器是非常不安全的。我将成为基础架构管理员,我会切断对 redis 服务器的任何访问,除了夫妻或服务器应用程序。
    猜你喜欢
    • 1970-01-01
    • 2016-05-22
    • 1970-01-01
    • 2017-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-09
    • 2012-06-12
    相关资源
    最近更新 更多