你可以异步通知网络浏览器吗?

时间:2009-03-10 23:47:44

标签: javascript ajax

我正在试图找出是否有办法以某种方式从Web服务器通知Web浏览器事件。

我知道Ajax允许您异步地发出更新页面部分的请求。我想我可以定期要求更新计时器。但是,如果可能的话,我宁愿避免采用投票方案。有没有更好的方法可以继续使用基于浏览器的解决方案?

8 个答案:

答案 0 :(得分:3)

查看"comet"技术,您基本上可以在服务器上打开一个连接,向您推送数据。

答案 1 :(得分:2)

好吧,你可以尝试设置“ignore-user-abort”-flag on,并确保脚本不会终止(条件)sleep())。在回显了需要传输的信息后,将文本刷新()到浏览器。

但我不推荐这个解决方案。相反:使用ajax,并使用轮询方案。最新的框架支持它开箱即用。

答案 2 :(得分:2)

彗星是你正在寻找的东西。有一些js库和http服务器使它更容易使用。它基于这样的想法:当服务器有流量时,保持连接打开某个请求并流回浏览器。您应该意识到浏览器通常可以在一个域中打开非常有限的连接(我认为通常是这样)。如果您想尝试一下,请查看:

dojo cometd

js io

orbited

apache tomcat advanced io

如果你正在进入erlang,请检查:

http://yoan.dosimple.ch/blog/2008/05/15/

答案 3 :(得分:1)

  

我想我可以定期要求更新计时器。但是,如果可能的话,我宁愿避免使用投票计划。

好运:这就是你要做的。 Web建立在请求/响应模型上:来自浏览器的1个请求,来自服务器的1个响应,以及始终按此顺序。

也就是说,您不必(也可能不应该)自己构建该投票方案。您可以找到一个现有的实现,它将详细信息抽象出来,并使其看起来像服务器通知客户端。

答案 4 :(得分:0)

您可以使用部分渲染。我会查看this article以获取更多信息。

此主题为another article

答案 5 :(得分:0)

WHATWG Web Applications 1.0规范中有Server-Sent Events已添加到Opera 9. Mozilla / Firefox似乎是working

答案 6 :(得分:0)

在过去,我发现了一篇关于HTML中流数据的好文章:

http://ajaxpatterns.org/HTTP_Streaming

可以有用:)

答案 7 :(得分:0)

另请查看RubyOnRails的{juggernaut here