AJAX长轮询是否会立即释放传入的数据?

时间:2012-07-08 02:22:04

标签: ajax comet long-polling

对于我们应用程序的新界面,我认为有必要放弃websockets并选择彗星以获得更广泛的支持。我意识到有几种技术,我需要确保选择正确的技术。

问题: AJAX轮询方法是否在收到数据后立即发布,或等到请求结束?

如果没有,有没有办法使用iFrame技术并消除浏览器的死亡旋转器?

谢谢!

3 个答案:

答案 0 :(得分:0)

Comet通过ajax(ajax长轮询)仅在请求完成后才将数据提供给应用程序的前端。当您需要以不规则间隔发送的离散数据包时,它非常有用。如果您想要分块数据,那么只需在第一个块之后完成请求,然后让客户端立即请求另一个块。如果准备好另一个块,立即服务;如果没有,那就让客户端等到有。

答案 1 :(得分:0)

值得注意的是,HTTP Long-Polling和HTTP Streaming都属于Comet保护伞。 Long-Polling要求关闭连接以发送数据。流不会,并且可以通过现有连接发送数据而不关闭它。

我不相信有一种简单的方法可以解决'死亡的旋转'问题。我在几年前写了一篇post about this,但我仍然不知道这是一个万无一失的解决方案。

就个人而言,我建议您使用WebSockets而不是hacky Comet solutions

  彗星是关于过去的。让我们展望未来。

- Comet的发明者Alex Russell

答案 2 :(得分:0)

发布数据....无论是否分块,都可以将其刷新到流中并从客户端访问(IE可能采取不同的行为)

如果您从管道(服务器)的另一侧控制流的大小,我在这里看不到任何风险。也许您需要从当前的解决方案中受益。如果您出于企业原因需要解决方案,请尝试PokeIn,或者如果只是闲逛,SignalR是免费的