使用Java将消息从服​​务器发送到客户端

时间:2012-04-20 12:49:28

标签: java linux messaging server-side

我正在使用 Apache Tomcat 7 JSP Servlets )。在我的应用程序中,我需要从服务器向客户端发送一些消息。贝娄,我会解释一下我在做什么。

简要说明:如果用户每次想要连接到互联网时都没有登录,则应用程序将显示登录页面。在用户成功登录并且他的时间即将结束之后,我将需要向客户端发送剩余时间的消息(例如,在最后几分钟)。它也可能是在特定时间打开广告弹出窗口的另一个要求。

我现在关于JMS,但我不知道我的情景有多合适。我也读过其他帖子,WebSocket也可以选择。

我在CentOS 6.2上运行服务器。

问题:对于这种情况,您对如何使用 Java 技术处理它有什么想法吗?如果您有其他想法,请随时公开!

N.B。与 JavaScript PHP 相关,我在SO的问题上找到了很好的答案。我对如何使用 Java 技术来解决这个问题感兴趣。

3 个答案:

答案 0 :(得分:2)

http://jwebsocket.org/ 也许这符合您的需求。

答案 1 :(得分:1)

您将无法启动从服务器到客户端的HTTP连接。一种解决方案是使用WebSocket / Comet Framework。不幸的是,websockets目前还没有广泛传播(服务器+浏览器)。我建议你使用一个框架来填补“差距”:https://github.com/Atmosphere/atmosphere

答案 2 :(得分:1)

我不理解您对我们在Java中实现解决方案的痴迷 - 任何有效的解决方案都应该可以跨不同的服务器端语言移植。但是,如果在没有同步用户驱动的交互的情况下发生终止,那么您只需在此处尝试处理服务器上的负载。如果你想让某人为你编写代码,那么这不是正确的论坛。

  

我现在谈论JMS .... CentOS 6.2。

这里帮助不大。

我们真正需要知道的是你的意思:

  

用户成功登录后,他的时间即将结束

(我假设你的意思是会话时间即将结束,除非你写了一些预测人们何时会死的软件。)

如何确定会话何时结束?

  1. 这是每页的时间限制吗?
  2. 从登录时起是固定时间吗?
  3. 会话是否被Java垃圾收集?
  4. 在1的情况下,最简单的方法是使用javascript在页面上设置超时(当用户导航到新屏幕时,超时将被丢弃),例如。

    setTimeout(function() {
        alert('5 minutes has expired since you got here - about to be logged out');
    }, (300000)); // 5 minutes
    

    在第二种情况下,你仍然使用上面的方法,但是减少javascript的超时时间已经花费在服务器上(使用java编写javascript,或者删除包含的cookie >登录时的javascript时间戳。)

    在第三种情况下.....你真的没有办法知道用户什么时候会被注销。