如何向所有登录用户发送通知

时间:2013-01-31 07:42:37

标签: java spring hibernate spring-mvc spring-security

我在MySQL应用程序上有一个Spring MVC,Spring Thymeleaf,Spring Security和Hibernate。我的任务是向所有当前登录的用户通知他们正在查看的页面是否有新数据,以便用户可以刷新并获取一组新数据。

我猜我可以将所有登录的用户存储在ApplicationScope会话中,然后以某种方式通知他们。但我以前从未这样做过,也不确定它会有多安全。

有人可以就如何做到这一点提出任何建议吗?

2 个答案:

答案 0 :(得分:3)

您需要推/拉架构(以启动从服务器端发送消息)。您使用的Spring框架都不能做到这一点。查看大气层https://github.com/Atmosphere/atmosphere

然后,只要持久保存新数据(您的DAO层可以触发此数据),您就可以通过Atmosphere servlet将新消息推送给所有订阅用户。 Atmosphere使用“频道”,因此您可以使用用户所在页面的预定义频道名称,所有用户都将收到该消息。您还可以使用Spring安全性保护Atmosphere servlet,因此未经身份验证的用户将无法收到通知。

答案 1 :(得分:1)

根据以上评论,您可以使用以下内容实现拉结构:

将所有事件存储在一个中央位置,可由所有会话访问(单例,数据库等)确保存在顺序ID。

存储在会话中检索到的最新事件ID。 根据需要,查询ID大于会话中存储的最新ID的事件。

希望这有帮助。

相关问题