Node.js 如何实时限制按钮的点击次数?

Node.js 如何实时限制按钮的点击次数?,node.js,real-time,comet,Node.js,Real Time,Comet,我最近有一个问题:我们如何实现对按钮点击的实时限制? 例如,在一个按钮上点击10次是有限制的。例如,Bob点击按钮,然后Bob和Rob看到有9次点击。第10次按下按钮后,该按钮被禁用 你有什么建议? 使用数据库跟踪单击次数 根据您的功能需求,您可能希望处于“即时一致性”与“最终一致性”之间,因此可以使用具有约束和事务的传统关系数据库,或者将单击存储在单个mongodb文档中,您可以进行原子更新 MongoDB您可以设置ClickTrackers集合和如下文档: 然后可以使用$addTo

我最近有一个问题:我们如何实现对按钮点击的实时限制? 例如,在一个按钮上点击10次是有限制的。例如,Bob点击按钮,然后Bob和Rob看到有9次点击。第10次按下按钮后,该按钮被禁用

你有什么建议?

  • 使用数据库跟踪单击次数
    • 根据您的功能需求,您可能希望处于“即时一致性”与“最终一致性”之间,因此可以使用具有约束和事务的传统关系数据库,或者将单击存储在单个mongodb文档中,您可以进行原子更新
  • MongoDB您可以设置ClickTrackers集合和如下文档:

  • 然后可以使用
    $addToSet
  • redis集可能运行良好(假设您允许每个用户单击一次)
  • 您需要一些实时库来帮助您将更新推送到连接的浏览器。可能是meteor.js或socket.io.js
  • 在向用户显示左键单击1次,其他人单击它,然后第一个用户在单击次数减少到0之前单击它(例如,购买流行音乐会的门票)之间存在延迟,这是无法避免的,因此您必须处理此问题并为其编写测试,并向用户提供一个用户界面“哦,没有点击了,事实上,对不起”

希望这能让你开始,但实际上你的问题并没有遵循stackoverflow指南,因为它“太宽泛了”“而且您还没有发布任何您尝试过的代码,所以请尝试一些东西,然后返回一些代码片段。

是否要限制所有用户的单击次数,如果两个不同的用户单击按钮,可用的单击次数为8次?如果是这样,您需要在站点的所有用户之间使用通信,然后如果Rob单击,您必须通知bob还有多少次单击。也许websocket会对你有所帮助。你需要使用一些东西来协调和协调浏览器之间的点击。许多开发人员可能会将socket.io用于“实时”部分,但最终,如果没有一个中央服务根据您建立的规则来决定是否允许“单击”,这是不实际的(因为您将有竞争条件)。
{
  button: "reserveSeat":
  clickedBy: [userId1, userId2]
}