【问题标题】:How to use Spring boot server sent events to update angular dashboard?如何使用 Spring Boot 服务器发送的事件来更新 Angular 仪表板?
【发布时间】:2021-08-26 09:38:59
【问题描述】:

我想开发一个带有条形图的仪表板。此条形图的条形图基于数据库值中的数据值。

假设需要绘制一个条形图,如x轴-状态,y-记录数。所以数据将使用单独的 API 添加,然后将数据添加到数据库中,我想在条形图中表示它。

我只是想通过 SSE 可以做到这一点吗?如果是,我该如何开始?

谢谢。

【问题讨论】:

  • 如果你想服务器到浏览器通信,你可以使用套接字将更新的数据发送到浏览器。每当您的另一个 api 更新数据库时,发送更新的数据套接字,以便浏览器可以更新它的图表。
  • @Ok,但我担心的是我们可以从数据库中实时获取最近插入的数据或发送数据吗?
  • 您可以获取,但您在浏览器中永远不知道数据库中的数据已更新。一种低效的方法是定期从后端提取数据。

标签: angular spring-boot server-sent-events


【解决方案1】:

您可以使用两种方法(对于单实例应用程序):

数据库拉取:只需定期拉取表以获取新条目,然后生成 SSE。

Pub-Sub: 只需实现一个内部应用队列(使用发布-订阅模式,为 Weblfux 或任何 Queue 使用 Flux strong> 实现(例如 Spring MVC 的 PriorityQueue)。将消息保存到数据库后立即将消息推送到队列,并在消费者端(您的控制器)发布该消息。

您可以创建 SSE:

  • Spring MVC:只需使用 SseEmitterExecutorService 来生成消息。
  • WebFlux:使用 Flux 生成消息。
The pulling approach has the drawback that it adds unnecessary load on your database.

不要忘记将procution type设置为MediaType.TEXT_EVENT_STREAM_VALUE


一些 Spring SSE 示例here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-26
    • 2020-01-11
    • 2020-10-04
    • 2017-04-20
    • 1970-01-01
    • 2020-11-22
    • 1970-01-01
    • 2019-03-04
    相关资源
    最近更新 更多