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

Send a message from Server to All Clients

我知道我没有任何代码可以展示给你们,我被困在某个时刻,我不知道从哪里开始。我希望有人能帮助我。

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

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

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

****更新**** 如果有这样的方式,我也可以使用轮询:如果控制器收到请求,会话在此期间应被视为空闲,例如,每 5 分钟调用一次控制器,会话结束时间为 30 分钟。如果每5分钟调用一次用于轮询的控制器,会话不会在这段时间内过期,我需要从计算空闲时间中排除特定控制器

无轮询解决方案: 据我所知,您需要一个远程过程调用机制。 我会选择 https://github.com/eriksank/rpc-websocket。 总体思路:

  1. 您的客户将自己注册到您的服务器进程 "consumers"。
  2. 消息准备就绪后,您的服务器会遍历每个已注册的 "consumer" 并发送 rpc-websocket 可以处理的消息。

投票解决方案: 这是一个总体思路,如果您已注册并登录用户,则可以使用。

  1. 有一个存储消息的数据库 table,我们称它为“messages”。
  2. 有一个跟踪消息和用户的数据库 table,我们称它为“message_tracker”。如果用户看到了一条消息,此 table 中将有一行用于 messageId 和 UserID。
  3. 让 javascript 脚本轮询服务器 url 以获取新消息。什么是新消息可以根据上面的数据库tables来决定。
  4. 如果找到新消息,处理它然后调用另一个服务器 url 插入 message_tracker 数据库 table