使用 Spring Boot 和 Angular 提醒推送通知

Posted

技术标签:

【中文标题】使用 Spring Boot 和 Angular 提醒推送通知【英文标题】:Reminder push notification using Spring Boot and Angular 【发布时间】:2018-04-05 12:44:47 【问题描述】:

我需要使用 Spring Boot 为 RESTful API 和 Angular(4 或 5)构建一个 Web 应用程序,它会在正确的时间提醒用户。例如如果我在上午 11 点开会,我的服务器组件应该实时知道上午 11 点有这个会议,然后通过 WebSockets 推送通知。我在网上找不到任何有用的资源来帮助我理解和设计这个需要每秒侦听数据库事件的特定组件。

任何人都可以在这里帮助我使用正确选择的工具来构建这个单一组件吗?这应该是 Apache Kafka 或 Apache Storm 之类的队列,还是完全其他的?

【问题讨论】:

如何处理 angular 5 中的推送通知。我的意思是你会使用 sockjs lib 等或任何官方的 angular api 吗? @nailanaseem 是的,我想是的。 【参考方案1】:

这是 Web 应用程序,因此只有在用户登录时才会传递事件,对吧?在这种情况下,由于没有用户,大多数事件很可能不会被传递。

我会使用 Websocket 传递事件,请参阅 Spring 指南如何做到这一点 https://spring.io/guides/gs/messaging-stomp-websocket/

简单的解决方案将使用http://www.quartz-scheduler.org/ 之类的工具安排所有事件。然后,如果事件触发并且用户已登录,则将使用 websocket 发送事件通知。但是,如果您有大量用户,这可能是一种浪费。

更轻量级的解决方案是

当用户登录时,检查他是否有预定的事件。然后使用客户端 javascript 调度在客户端为它们注册通知。 当用户的事件发生服务器端更改时,您需要将有关这些事件的更新传递给已登录的用户。

对我来说,消息队列不适用于那里。当您为将来的事件排队消息时,没有明智的方式在事件即将发生时使用此消息。

【讨论】:

感谢 Bartosz 的回答。是的,用户将登录到应用程序。你说的对我来说很有道理,那就是使用 JavaScript 调度通知客户端的用户。 Quartz 会在我的 Spring Boot 项目之外独立运行吗?在这种情况下,我将不得不单独部署它。 @SamirJoglekarquartz可以在spring boot项目中运行,兼容只需配置docs.spring.io/spring-boot/docs/current/reference/html/…

以上是关于使用 Spring Boot 和 Angular 提醒推送通知的主要内容,如果未能解决你的问题,请参考以下文章

markdown 使用Spring Boot和Angular 5下载Excel文件

如何使用spring boot和angular 2登录

无法使用 Spring Boot 和 Angular 修复 CORS 问题 [重复]

如何使用 Angular 和 Spring Boot 添加社交登录功能

使用 Angular 2 和 Spring Boot 发送发布请求

Spring Boot 和 Angular 2 的 URL 处理问题