使用node.js监视更改(在数据库中)

时间:2012-08-19 07:14:05

标签: node.js

首先,我必须声明这更像是一种策略"或"算法"有点问题,我不确定它是否符合这里的规则。如果这是在错误的地方,请原谅我,并告诉我如果问的话我应该在哪里问这个问题。不需要变得敌对。

我也完成了我的研究(阅读Node.js - Monitoring a database for changesInvoking a PHP script from a MySQL trigger等问题),但无法找到真正满意的答案......

我的情景:我正在进行预备拍卖网站。产品的价格设定为100usd,在拍卖期间(5min-10min),价格将在随机时间下降(多次)到RANDOM金额。这些随机数量和时间实际上已经由卖方在开头预先设定。

会有很多买家/观察者,我们需要在价格下降时以实时价格更新它们。我一直在考虑不同的选择: 1.我可以使用node.js来查看某些文件(每个产品都有一个文件,其中只包含该产品的当前价格,我们只需使用cron来更新这些文件?) 2.或者,既然价格变化已经发生,我们已经知道了,我们可以说,"计时器"对于每个会在特定时间醒来的产品,并通知所有观看它的用户?

我认为可能还有一些更好的方法,这就是我想在这里发布的原因,希望有人已经做过类似的事情可以为我提供一些启示 _

非常感谢你。

2 个答案:

答案 0 :(得分:1)

这是什么类型的数据库?如果它是CouchDB,您可以查看_changes feed并确切知道何时发生了变化。如果这些买家在网络浏览器中,他们将更容易与此Feed同步。

如果它是您没有更改Feed的另一种数据库,则应在更新价格后立即使用发布/订阅并发布到频道。然后你在另一端听,如果买家在网页上,你用WebSocket更新他们的视图。 Trello的基础设施或多或少都是这样的(Redis for Pub / Sub,然后他们在订阅中挂钩Web套接字以获取网页的更新)。

我认为这些是实时做到这一点的唯一方法。听取事件。如果事情发生了变化(a.k.a.轮询),则检查每x ms是不是实时的。

答案 1 :(得分:0)

最简单的方法是提前获取这些日期并在页面加载时将它们发送到客户端,然后在客户端上设置计时器。如果您对安全性严格要求,则只能发送时间,并且只有在即将显示价格时才让客户端获取价格。如果两者都不是选项,您可以定期轮询服务器,或者,如果您可以将数据推送到客户端,我会使用服务器方法上的计时器。