从服务器向所有客户端发送消息

时间:2016-09-30 05:40:17

标签: java spring spring-mvc model-view-controller polling

我知道我没有任何代码可以告诉你们,我在某些方面陷入困境,我不知道从哪里开始。我希望有人能帮助我。

我正在开发一个Spring MVC应用程序,我需要向所有活动会话用户发送一条消息来执行一个脚本,该脚本可供所有客户端使用,因为它在js文件中定义并包含在每个用户中。

我环顾四周,发现了一些提供Atmosphere等功能的框架,但我认为不应该在我的情况下使用它,因为它是一个很大的框架,所需的功能非常少。我也已经使用了彻底的WebSockets,但我找不到任何可以帮助我在客户端为所有客户端调用脚本的东西。

如果有人可以帮助我走上正确的道路或指导我做类似的例子。我将不胜感激。

**** ****更新 我还可以使用轮询,如果有以下方式:如果控制器获得请求,则会话期间应被视为空闲,例如,每5分钟调用一次控制器,并且会话输出时间为30分钟。如果每5分钟调用一次用于轮询的控制器,则会话将在此时间内到期,我需要将特定控制器排除在计算空闲时间之外

1 个答案:

答案 0 :(得分:1)

无投票解决方案 从我收集的内容来看,您需要一个远程过程调用机制。 我会选择https://github.com/eriksank/rpc-websocket。 总体思路:

  1. 您的客户将自己注册为您的服务器进程“消费者”。
  2. 当消息准备就绪时,您的服务器会遍历每个已注册的“消费者”并发送rpc-websocket可以处理的消息。
  3. 投票解决方案: 这是一个一般性的想法,如果您已经注册,登录用户就可以使用。

    1. 拥有一个存储邮件的数据库表,我们称之为“邮件”。
    2. 有一个跟踪消息和用户的数据库表,我们称之为“ message_tracker ”。如果用户看到了消息,则此表中将有一行用于messageId和UserID。
    3. 让javascript脚本轮询服务器网址以获取新邮件。什么是新消息可以根据上面的数据库表来决定。
    4. 如果找到新消息,请对其进行处理,然后调用另一个插入 message_tracker 数据库表的服务器URL