【发布时间】:2013-08-11 10:48:20
【问题描述】:
我使用 Spring MVC 制作 Web 应用程序,并且用户可以相互发送消息。我怎样才能实现这样的功能:当用户在他的消息页面上并且他从其他人那里得到消息时,这条消息会添加到他的消息列表中而不刷新页面。某种推送通知,但我想不出正确的想法,如何实现它。
【问题讨论】:
标签: java spring spring-mvc web websocket
我使用 Spring MVC 制作 Web 应用程序,并且用户可以相互发送消息。我怎样才能实现这样的功能:当用户在他的消息页面上并且他从其他人那里得到消息时,这条消息会添加到他的消息列表中而不刷新页面。某种推送通知,但我想不出正确的想法,如何实现它。
【问题讨论】:
标签: java spring spring-mvc web websocket
这里有两点需要考虑; “消息”框架和客户端通知。
通常,“消息传递”框架将被设计/构建为独立于视图层(Spring MVC 部分),并且可能包含可靠的消息传递平台(JMS、AMQP 等)或某些允许事件的服务被推入框架。这允许用户“连接”到彼此独立的 JVM 实例(例如集群 Tomcat 环境或类似环境)。
一个更简单的老派解决方案是使用共享数据库并将消息写入/读取到具有用户标识符的共享表; from=userA,to=userB,message=... 之类的东西,您可以使用轮询机制来检索消息。
在客户端,有许多模式,包括长轮询、ajax、websockets 等,旨在解决这个设计问题。为了融入轮询解决方案,AJAX 定时轮询器(与事件相结合)将允许您通过向服务请求“我(用户 B)是否有任何新消息?”来不断更新页面的一部分。
投票解决方案是“老派”,还有更多选择。深入研究考虑到这一确切挑战而开发的诸如 websockets 之类的主题。 (也看看 Tomcat8 的 websocket 支持)
【讨论】: