我知道我没有任何代码可以向你们展示,我在某个时刻陷入困境,不知道从哪里开始。我希望有人能帮助我。
我正在开发一个 Spring MVC 应用程序,我需要向所有 Activity session 用户发送一条消息来执行一个脚本,该脚本可供所有客户端使用,因为它在 js 文件中定义并包含在每个用户中。
我环顾四周,发现一些框架提供了这些类型的功能,例如 Atmosphere,但我认为它不应该在我的情况下使用,因为它是一个大框架,所需的功能很少。我也彻底了解了 WebSockets,但我找不到任何可以帮助我在客户端为所有客户端调用脚本的东西。
如果有人可以帮助我走上正确的道路或指导我找到类似的例子。我将不胜感激
****更新**** 如果有这样的方法,我也可以使用轮询:如果 Controller 收到请求,则 session 在此期间应被视为空闲,例如,有一个 Controller 每 5 分钟调用一次, session 中的超时时间为 30 分钟。如果用于轮询的 Controller 每 5 分钟调用一次,则 session 此时不会过期,我需要从计算空闲时间中排除特定 Controller
最佳答案
无轮询解决方案: 据我所知,您需要一个远程过程调用机制。 我会选择https://github.com/eriksank/rpc-websocket 。 总体思路:
- 您的客户端将自己作为“消费者”注册到您的服务器进程。
- 当消息准备好时,您的服务器会遍历每个注册的“消费者”并发送 rpc-websocket 的消息。可以处理。
轮询解决方案: 这是一个总体思路,如果您已注册、登录用户,则适用。
- 有一个存储消息的数据库表,我们将其称为“消息”。
- 有一个用于跟踪消息和用户的数据库表,我们将其称为“message_tracker”。如果用户已查看消息,则此表中将有一行用于 messageId 和 UserID。
- 使用 JavaScript 脚本轮询服务器 URL 以查找新消息。可以根据上面的数据库表来决定什么是新消息。
- 如果发现新消息,对其进行处理,然后调用另一个服务器 URL,该 URL 会插入到 message_tracker 数据库表中
关于java - 从服务器向所有客户端发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39784427/