【发布时间】:2010-11-18 06:50:00
【问题描述】:
我注意到我的一些使用 ajax 的网站(我访问的网站,而不是我建立的网站)具有某些自动刷新功能。例如,在 GMail 中,如果我收到一条新消息,我会在没有重新加载页面的情况下看到新消息。 Facebook 基于浏览器的 IM 客户端也是如此。据我所知,没有任何 java 小程序处理服务器-浏览器绑定,所以我只能假设它是由 AJAX 完成的,也许还有一些我不知道的元素。所以我最好的猜测是,它是通过以下两种方式之一完成的:
-
1234563或
javascript 处于闲置状态,服务器端脚本实际上将任何更新“推送”到浏览器。但我不确定这是否可能。我想有某种 AJAX 功能仍然 ping,但它只是询问“任何更新?”并且服务器脚本有一个简单的布尔值,表示“不”或“我很高兴你问了”。但如果是这种情况,任何数据更改都需要直接调用脚本,以便它准备好数据更改并对布尔函数进行更改。
那么这可能/可行/它是如何工作的?我想像:
有人向服务器发送电子邮件/IM/DB 更新,服务器使用脚本的 URL 加上一些相关的 GET 变量调用脚本,脚本记录更改并更新“可用更新”变量,AJAX 得到响应如果确实有更新,AJAX 就会运行其正常的“更新页面”功能,该功能会执行正常的更新脚本并将它们输出到浏览器。
我问是因为 js 只是在进行持续检查似乎效率很低,这需要 a)服务器每 1.5 秒工作一次,b)我的浏览器每 1.5 秒工作一次,这样我就可以可以说“天哪,我有一个 IM!就像一个真正的 IM 客户端一样!”
【问题讨论】:
标签: ajax asynchronous server-side server-push