Javascript 不使用iFrame的Comet应用程序

Javascript 不使用iFrame的Comet应用程序,javascript,ajax,comet,server-push,Javascript,Ajax,Comet,Server Push,我刚刚开始使用服务器端推送创建AJAX应用程序。我在Glassfish V2上使用Grizzly Comet。几乎所有示例应用程序都使用iframe来更新客户端的内容。我想坚持只使用JavaScript。有没有这样的示例应用程序(最好是不使用JavaScript库的应用程序)?推送的关键是HTTP请求永远不会结束。并非所有客户机实现都能正确处理这一问题。在我看来,在Firefox中使用纯javascript和扩展的API是可以做到的,但是XMLHTTPRequest对象将超时,并且无法流式传输内

我刚刚开始使用服务器端推送创建AJAX应用程序。我在Glassfish V2上使用Grizzly Comet。几乎所有示例应用程序都使用iframe来更新客户端的内容。我想坚持只使用JavaScript。有没有这样的示例应用程序(最好是不使用JavaScript库的应用程序)?

推送的关键是HTTP请求永远不会结束。并非所有客户机实现都能正确处理这一问题。在我看来,在Firefox中使用纯javascript和扩展的API是可以做到的,但是XMLHTTPRequest对象将超时,并且无法流式传输内容

如果框架是好的,您也可以尝试对象标记,如果它是关于标准遵从性的


在XMLHTTPRequest和Ajax没有名字之前,我们通常通过iFrame从服务器获取数据。

这就是我如何解决如何仅使用javascript和php进行推送的问题

让javascript进行初始调用并将内容加载到div中。 然后让javascript回调php,让php休眠,直到它看到有一个新的更新。 然后将数据发送给所有人,然后调用php并再次休眠


这允许长时间轮询和更少的背对背呼叫。我个人在php脚本上花了5分钟到30分钟的时间。

我正在使用XMLHttpRequest,它在Firefox中对comet流非常有效。遗憾的是,对于IE,我还需要一个iframe选项,但是XMLHttpRequest要好得多。IE中有一个类似的对象,但是它不能像Firefox一样在readyState(模式)3中访问。因此,您只能在流结束时使用它,这对于comet流几乎没有用处。