如何使用Javascript保持网站上的项目列表更新?

时间:2014-05-07 10:24:07

标签: javascript php jquery real-time

来自Python / Java / PHP,我现在正在建立一个网站。在它上面我想要一个近实时更新的项目列表:如果项目(服务器端)被添加到列表或从列表中删除,这应该在网页上更新。我做了一个简单的API调用,我现在每秒轮询一次,使用jQuery更新列表。因为我需要在同一页面上保留更新的更多列表,所以我担心每个开放浏览器每秒会有超过10次服务器调用,即使没有更新。

这似乎不是合乎逻辑的做法,但我真的不知道如何做到这一点。我查看Meteor,但由于我正在构建的网页是更大系统的一部分,因此我在技术选择(基本LAMP设置)方面受到限制。

有没有人可以通过实时网站的提示来了解如何有效地更新列表?

2 个答案:

答案 0 :(得分:2)

您可以使用WebSocket(https://code.google.com/p/phpwebsocket/)技术。

但是php并不是实现它的最佳语言

答案 1 :(得分:1)

一种方法是使用状态变量来处理您想要更新(或不更新)的不同类型的数据。

为了避免重新查询整个表,即使其中的数据集在任何给定时间内与特定客户端显示的内容相比没有发生变化,您也可以为数据类型维护一个状态计数器变量。服务器(例如在专用的小表中)和客户端的javascript变量。

每当对服务器上的数据表进行更新时,都会在那里更新状态计数器。

然后,您的AJAX轮询调用将查询此状态计数器,将其与相应的javascript变量进行比较,并且只有在更改后才执行数据更新调用,将本地javascript变量更新为服务器具有的内容。

为了避免必须单独轮询每个数据类型,您可能希望使用带有每个数据类型成员的JS对象。

注意:是的,这都是理论上的,但是,嘿,问题也是如此;)