【问题标题】:Real time binding between SpringBoot backend and Angular frontendSpringBoot 后端和 Angular 前端之间的实时绑定
【发布时间】:2020-04-29 17:03:33
【问题描述】:

我正在寻找一种解决方案,它允许我制作一个 Angular 组件来监听后端对象,该对象由其他服务更新。

实际上,我有一个名为SignatureStatusComponent 的组件,它显示了客户签名的实际状态。 Project 对象中的 signatureStatus 仅在后端通过 REST 公开端点更新到第三方服务,允许用户执行他们的数字签名。

我的问题是,一旦第三方服务执行回调更改状态,如何实时更新 UI 与实际状态。

这是一个简单的架构来解释更多架构:

为了您的信息,我使用SpringBoot 用于后端,Angular 用于前端。

【问题讨论】:

  • 用户 WebSockets(例如 StompJS 可用于 spring 和 angular 应用程序,我在我的项目中使用此解决方案用于 spring+angular)

标签: angular spring-boot binding real-time


【解决方案1】:

据我了解,您希望 Angular 应用程序在后端(Spring Boot)应用程序发生特定事情时得到通知。

有多种可能性,包括轮询,但在我看来,最直接的方法是使用 Web Sockets。

在 Angular 方面,您可以使用 rxjs webSocket,它为您提供了一个 Observable,您可以订阅入站消息(IIRC,您可以在其上调用 next() 来发送消息)。

在后端,看看 TextWebSocketHandler 或其中一个 SocketHandler 类。

如果您有更复杂的要求,另一种选择是两端都使用 STOMP 协议 - 有很多关于 Spring 的 STOMP 教程,看起来有 rxjs WebSocket 的 STOMP 实现

【讨论】:

  • 感谢您的建议 .. 我开始实施它,但我有点沮丧,因为它有点复杂,但在您的回复之后,我确信这是一个很好的解决方案 :) 我会发布一个完整的尽快回复以帮助他人也许
  • 你好@GreyBeardedGeek,你能帮我理解一下,如果在前端使用RxJS websocket并在后端使用stomp(使用Spring)实现可以正常工作吗?作为前端架构师询问使用 stomp 库并不好,因为前端有 rxjs 库,他不想增加前端的依赖项/库(这对我来说很奇怪)。而且我可以在后端使用 stomp,因为它很容易开箱即用。试图了解这里的区别stackoverflow.com/questions/40988030/…
  • 不,你不能使用标准的 rxjs 我们通过 stomp 实现套接字,因为 stomp 在顶部添加了一个额外的协议。您必须使用特定于 stomp 的版本,例如 github.com/stomp-js/rx-stomp
猜你喜欢
  • 1970-01-01
  • 2018-12-01
  • 1970-01-01
  • 2021-05-02
  • 2014-02-09
  • 2017-12-23
  • 2015-06-19
  • 1970-01-01
  • 2022-01-20
相关资源
最近更新 更多