2010-12-15 49 views
0

我有一个基于java的web应用程序(struts 1.2)。我有要求在前端(jsp)上显示状态。现在状态可能会改变,我的服务器被另一台服务器通知。但我希望将此状态更改通知给浏览器。通知浏览器服务器上的事件

我不想每隔一段时间刷新一次。相反,我必须实现像在Gmail聊天,即完成。通过更改服务器上的事件来通知浏览器。

关于如何去做这件事的任何想法?

我正在考虑打开一个请求到服务器的状态的请求,并在服务器端我会保持请求,并不会回应,直到有状态更改。任何指针,例如?

回答

1

最好的解决方案是使用XMPP协议。它是标准化的,许多开源解决方案将让您在几分钟内开始。您可以使用Smack,StropheJSOpenfire的组合来让您的基于Java的应用程序按需工作。

1

有一种称为长轮询(Comet)的方法。它基本上向服务器发送一个请求。在服务器上创建的请求线程只是等待用户的新数据,时间限制可能为1分钟或更长。当新数据可用时,它将被返回。

主要问题是解决服务器端问题,您不希望每个用户都只有一个线程在等待新数据。当然,您可以根据您的后端使用一些异步方法。

编号:http://en.wikipedia.org/wiki/Push_technology

替代的方法是使用WebSockets。问题是今天所有的浏览器都不支持它。