struts2使用jquery进行长轮询

时间:2012-12-18 00:41:16

标签: java jquery struts2 long-polling

我之前有过使用PHP和jQuery进行长轮询的经验,可以检查新的聊天消息。

想法是有一个while循环检查是否有新消息,如果是,则返回新消息,如果没有则再睡5秒并再次检查。

我想使用java struts2框架做同样的事情。我创建了一个具有while循环的动作类,并执行相同的操作,并使用Thread.sleep()进行等待。

但是我经历了一些非常高的CPU使用率。我做得对吗?我很抱歉我现在没有任何示例代码,因为我使用一种使用客户端轮询的简单方法重新做了它。

帮助表示赞赏。

2 个答案:

答案 0 :(得分:1)

为什么不使用阻止队列?我不明白为什么这与jQuery和长轮询有关。这是服务器内部设计问题。

答案 1 :(得分:0)

如果(尽管标题是jQuery),你想用Java做这个(“我想用java struts2框架做同样的事情。”),然后是a while loop is not a good solution;

相反,您应该使用java.util.Timer(/ TimerTask)。

请注意,在Struts2中,每个请求都会实例化一个Action,因此如果在Action中创建一个Timer,并且您有100个并发用户,则运行100个定时器。 use it from an EJB会更好。

看看这个SO答案:

1)Timer & TimerTask versus Thread + sleep in Java

2)How to set a timer in java

并在Javadoc: The Java EE 5 Tutorial - Using the Timer Service

我的2美分......