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

首先,我必须指出,这更像是一个“策略”或“algorithm”的问题,我不确定它是否符合规则。 请原谅,如果这是错误的地方,只是让我知道我应该问这个问题,如果是的话。 没有必要敌视。

我也做了我的研究(阅读像Node.js的问题- 监视数据库的变化或从MySQL触发器调用PHP脚本 ),但无法find一个真正满意的答案,所以…

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

会有很多买家/观察者,我们需要在价格下跌时以实时价格进行更新。 我一直在考虑不同的select:1.我可以使用node.js来查看某些文件(每个产品将有一个文件,其中只包含当前产品的价格,我们将简单地使用cron来更新这些文件?或者,因为我们已经知道价格变动会在什么时候发生,所以我们可以为每个在特定时间醒来的产品说一个“定时器”,并通知所有观看它的用户?

我想也可以有更好的方法,所以我想在这里发表,希望有人已经做了类似的事情可以给我一些启示_

非常感谢你提前。

这是什么样的数据库? 如果是CouchDB,您可以观察_changes feed,并确切地知道什么时候发生了变化。 如果这些买家将在networking浏览器中,那么他们将更容易与此订阅源同步。

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

我认为这是实时做出来的唯一方法。 听事件。 检查每个x毫秒如果事情已经改变(又名轮询)不是实时的。

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