我使用 Spring MVC 制作 Web 应用程序,用户可以相互发送消息。我如何实现这样的功能:当用户在他的消息页面上并且他从其他人那里收到消息时,该消息会添加到他的消息列表中而无需刷新页面。某种推送通知,但我想不出正确的想法,如何实现它。
最佳答案
这里有两点需要考虑; “消息传递”框架和客户端通知。
通常,“消息传递”框架将被设计/构建为独立于 View 层(Spring MVC 部分),并且可能由可靠的消息传递平台(JMS、AMQP 等)或一些允许将事件推送到框架中的服务组成。这允许用户“连接”到彼此独立的 JVM 实例(例如集群 Tomcat 环境或类似环境)。
一个更简单的老派解决方案是使用共享数据库并使用用户标识符向共享表写入/读取消息;类似 from=userA,to=userB,message=... 您可以使用轮询机制来检索消息。
在客户端,有许多模式,包括长轮询、ajax、websockets 等,旨在解决这个设计问题。为了与轮询解决方案结合起来,AJAX 定时轮询器(与事件结合)将允许您通过向服务请求“我(userB)有任何新消息吗?”来不断更新页面的一部分。
轮询解决方案是“老派”,而且还有比这更多的选择。深入研究 websocket 等主题,这些主题是针对这一具体挑战而开发的。 (也可以看看 Tomcat8 的 websocket 支持)
关于java - Spring MVC 应用程序中用户之间的消息传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18171127/