Spring Boot - 将消息推送到 Angular UI

Avi*_*ash 2 spring spring-boot spring-websocket

我想开发一个应用程序,我想将消息(或数据)从后端 Spring boot 应用程序推送到 UI。

我有以下要求 -

  1. 假设有一个 REST 服务使用 POST 方法接受来自其他应用程序的数据。
  2. 该数据将被推送到 UI。

或者

考虑有一个正在运行的后台进程会生成事件,并且我们希望将这些事件推送到 UI。

为此,我遇到了可以在 Spring Boot 应用程序中使用的 WebSocket 组件。

但是,是否需要任何其他设置才能将传入数据推送到 UI?

任何帮助表示赞赏。

谢谢,

阿维纳什·德什穆克

小智 6

后端无法神奇地将更新推送到客户端 UI。后端将无法知道 UI 存在于何处(即 UI 的 IP 地址是什么),即使知道,它也可能无权建立连接(由于防火墙或 NAT)。

\n\n

因此,客户端 UI 必须请求更新。实现此目的的一种方法是在 UI 应用程序中设置一个计时器,通过 REST 轮询更新。但这本质上就是 websocket 所做的——开销要少得多。

\n\n

这就是您日常使用的常见应用程序始终工作的方式。所以我不知道为什么你不想走 websockets 路线。

\n\n

...

\n\n

从Spring 5.0.5.RELEASE开始,\xe2\x80\x99不需要进行任何定制,因为@SendToUser注释的改进,允许我们通过\xe2\x80\x9c/向用户目的地发送消息user/{sessionId}/\xe2\x80\xa6\xe2\x80\x9d 而不是 \xe2\x80\x9c/user/{user}/\xe2\x80\xa6\xe2\x80\x9c。

\n\n

这意味着注释的工作依赖于输入消息的会话 ID,有效地将回复发送到会话私有的目标:

\n\n

...

\n\n

这里有一个很好的例子:

\n\n

https://www.baeldung.com/spring-websockets-sendtouser

\n