2011-08-04 54 views
1

我想实现像www.foursquare.com的索引​​页如何实现实时仪表板?

我检查与Chrome的开发者工具foursquare.com的索引​​页,并惊讶,他们不使用XHR至约得到这些信息的实时仪表板。每5秒钟一次。

使用ajax轮询会在某些浏览器中导致内存泄漏并导致服务器繁忙。

有什么办法可以用PHP和jQuery(AJAX)有效地实现实时仪表板?

(也许我需要一个额外的服务器,像推服务器?):

回答

0

Foursquare的主页载入30项(id=recent29id=recent28,...),但一次只显示11个。所以你会有大约90秒的实时感受(之后,相同的物品会重新出现)。

... 
$('#recent'+toShow).slideDown(1000, move(i)); 
$('#recent'+i).slideUp(1000, move(i)); 
... 

对于一些双向的客户端服务器通信,看看websockets,即使他们没有得到普遍支持的是,他们最终成为一个标准。

WebSocket API正在由W3C标准化,WebSocket协议正在由IETF标准化。

0

一种方法来获取数据推送到客户端是这样一个循环:

  1. 在浏览器中打开AJAX请求。
  2. 服务器等待请求打开,直到它超时或新数据可用。
  3. 服务器用新数据或超时返回请求,客户端立即打开一个新的请求。
+0

你的意思是一个AJAX长轮询? – InspiredJW

0

你可以使用彗星,APE是特别容易安装和配置:

http://www.ape-project.org/

后端是写在C所以它的速度非常快。

+0

我之前曾研究过这个。我是否必须设置一个仅用于Comet目的的独立服务器?我不知道实现获取彗星信息的一部分与jQuery(客户端)或PHP(服务器端):( – InspiredJW

+0

这是一个很好的问题,我不知道如果你需要一个专用的服务器,你一定会需要命令你可以打开一个“频道”并向该频道发送一个事件,然后在客户端你有一个回调函数,当你收到一个事件时,这个函数就会触发 –

+0

如果你不想要为了维护您自己的实时基础架构,您应该查看托管的实时服务服务,例如我工作的[Pusher](http://pusher.com)。使用此功能,您可以将消息推送到您的Web客户端我们的其余API,并使用我们的JavaScript(或其他技术)客户端连接到我们的服务。 – leggetter