Spring MVC应用程序中的用户之间的消息传递

时间:2013-08-11 10:48:21

标签: java spring spring-mvc web websocket

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

1 个答案:

答案 0 :(得分:1)

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

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

一个更简单的旧学校解决方案是使用共享数据库并使用用户标识符向共享表写入/读取消息;像from = userA,to = userB,message = ...你可以使用轮询机制来检索消息。

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

投票解决方案是“老派”,除此之外还有更多选择。我们可以深入研究一下这些主题,例如在考虑到这一挑战时开发的websockets。 (并看看Tomcat8的websocket支持)