1

我使用 Spring MVC 制作 Web 应用程序,并且用户可以相互发送消息。我怎样才能实现这样的功能:当用户在他的消息页面上并且他从其他人那里得到消息时,这条消息会添加到他的消息列表中而不刷新页面。某种推送通知,但我想不出正确的想法,如何实现它。

4

1 回答 1

1

有两件事情要考虑;“消息”框架和客户端通知。

通常,“消息传递”框架将被设计/构建为独立于视图层(Spring MVC 部分),并且可能包含可靠的消息传递平台(JMS、AMQP 等)或允许推送事件的某些服务进入框架。这允许用户“连接”到彼此独立的 JVM 实例(比如集群的 Tomcat 环境或类似环境)。

一个更简单的老派解决方案是使用共享数据库并将消息写入/读取到具有用户标识符的共享表中;from=userA,to=userB,message=... 之类的东西,您可以使用轮询机制来检索消息。

在客户端,有许多模式,包括长轮询、ajax、websockets 等,旨在解决这个设计问题。为了融入轮询解决方案,AJAX 定时轮询器(与事件相结合)将允许您通过向服务请求“我(用户 B)有任何新消息吗?”来不断更新页面的一部分。

投票解决方案是“老派”,还有比这更多的选择。深入研究考虑到这一确切挑战而开发的诸如 websockets 之类的主题。(也看看 Tomcat8 的 websocket 支持)

于 2013-08-11T10:58:37.777 回答