【问题标题】:Events handling between Spring boot and ReactjsSpring boot 和 Reactjs 之间的事件处理
【发布时间】:2020-09-29 12:09:02
【问题描述】:

这在互联网上似乎是一个简单的解决方案,但请相信我,我已经看过很多示例,无法弄清楚该选择哪种方法。

要求: 我在应用程序服务(spring boot/Java)端有一个订阅者,订阅了区块链事件(corda)。每当状态发生变化时,我想将此事件推送到 UI (ReactJS)。

我可以成功订阅区块链事件,但在将其推送到 UI 以及 UI 如何接收我的事件(请不要建议付费服务、API、库等)方面遇到了多个不完整或纠结的想法。

我遇到并尝试了所有方法,因为我是新近处理的事件,我需要一些关于如何接近完整解决方案的光线。

  1. 发布者-订阅者模式
  2. 可观察到的模式
  3. Sse 发射器
  4. 助焊剂和单声道
  5. Firebase(明确表示否)

+博格勒:

  1. 服务和 UI 之间的事件处理,应该是通过 API/端点调用还是可以在空中发出(我不清楚),我们可以根据事件名称在 UI 中订阅它吗?
  2. 我应该有两个专用于此的 API 吗?一个触发订阅,另一个实际执行发射器?
  3. 如果端点总是被听到,它不需要专用资源吗?

我基本上需要一种清晰的方法来处理这个问题。

可根据需求提供代码

【问题讨论】:

  • 1,2 和 4 基本上都是 3 或者通过 websockets。你在服务器上做事的方式并不一定会改变你在客户端上做事的方式。
  • 不是 React 专家,但请查看已弃用的示例 repo 中的 this sample;它使用 React 作为前端;也许你会在那里找到一些答案。

标签: java reactjs spring events corda


【解决方案1】:

我看到你提到你能够在 Spring Boot 中捕获事件。因此,您需要将事件信息发送到前端。我可以想出三种方法来做到这一点。

  • Websockets:可能有点过头了,因为我想您不需要双向通信。
  • SEE:也许是比 WebSockets 更好的选择。
  • 或者只是轮询:如果您不是在寻找实时通知,这也是一个不错的选择。

【讨论】:

    【解决方案2】:

    是长轮询。

    解决方案似乎很简单。建立一次连接,让他们尽可能地等待。这样一来,如果有新的数据到达服务器,服务器可以直接返回响应。这样我们肯定可以减少所涉及的请求和响应周期的数量。

    您会在 Internet 上找到多个作为 Spring Boot 项目的一部分完成多长时间轮询的实现示例。

    【讨论】:

      猜你喜欢
      • 2019-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-24
      • 2015-07-15
      • 2015-12-31
      相关资源
      最近更新 更多