0

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

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

我现在大约,JMS但我不知道这对我的场景有多合适。我还在其他帖子中阅读过,WebSocket也是一种选择。

我在 CentOS 6.2 上运行服务器。

问:对于这个场景,你有没有一些想法,如何用Java技术来处理它?如果您还有其他想法,请随时公开!

NB 与JavaScriptPHP相关我在 SO 的问题上找到了很好的答案。我对如何使用Java技术解决这个问题特别感兴趣。

4

3 回答 3

2

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

于 2012-04-20T12:53:15.643 回答
1

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

于 2012-04-20T12:55:52.523 回答
1

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

我现在关于 JMS....CentOS 6.2。

这里没有太多帮助。

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

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

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

您如何确定会话何时结束?

  1. 每页有时间限制吗?
  2. 从他们登录开始是固定时间吗?
  3. 是在会话被Java垃圾收集的时候吗?

在 1 的情况下,实现这一点的最简单方法是使用 javascript 在页面上设置超时(当用户导航到新屏幕时,超时将被丢弃),例如

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

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

在第 3 种情况下......您真的无法知道用户何时会注销。

于 2012-04-20T13:18:33.990 回答