使用ajax / jquery进行浏览器即时更新

时间:2010-04-21 04:47:43

标签: javascript ajax facebook observer-pattern

我正在尝试对facebook处理通知的方式进行逆向工程,当您收到消息时,您会立即通过浏览器收到通知。

我已经摆弄了一点,并意识到如果你要从服务器进行某种更新,总会有一个挂起的GET请求“正在侦听”。这似乎是某种观察者模式。我只是想知道这种模式是否记录在某处。

2 个答案:

答案 0 :(得分:2)

该技术实际上称为Long Polling。这是解决传统民意调查局限性的流行Comet技术之一。

您可能需要查看以下Stack Overflow帖子,这是一个非常简单的示例:


<强>更新

除上述内容外,我建议您查看以下Stack Overflow帖子的接受答案,详细说明该技术:

答案 1 :(得分:0)

该技术称为Comet,又名“服务器推送”

目前有两种实施彗星的主要方式。

1)正如Daniel所提到的,长轮询,你可以使用ajax向浏览器留下一个挂起的请求,直到服务器决定发送响应(无论是基于别人的行为还是其他行为)服务器事件)。

2)Google使用的第二种方法是流媒体。这涉及使用ajax留下挂起请求,但响应永远不会发送回给你。相反,服务器会更新数据位,您可以使用javascript来监控更改,并根据推入的新数据触发事件。如果您在一个永不关闭的文档中流入一个非常长的连续数据流,会发生什么数据进来。

HTML5有一个更简单的方法来规范Web-Sockets。将来,这种类型的实时网络应用程序将变得司空见惯,因为Web-Sockets易于使用,但目前并不支持所有浏览器。

如果要构建用于生产的Comet站点,则需要使用非阻塞I / O异步服务器,如下所示:

http://www.tornadoweb.org/ - python

http://nodejs.org/ - 服务器端javascript

- 或google用于彗星服务器。

你需要知道如何在服务器端为彗星类型的应用程序编程,因为Comet的javascript非常简单,只是你和几个事件处理程序的普通ajax调用。