【问题标题】:Handling timers for many users in Nodejs在 Nodejs 中为许多用户处理计时器
【发布时间】:2016-06-06 21:44:16
【问题描述】:

我正在 Node/Express 中构建一个网络应用程序,以便用户可以设置一个计时器,以便执行或重复某个任务。我的问题是如何在截止日期后触发事件的许多用户设置计时器。我不想在客户端处理这个问题,因为用户可以关闭浏览器。一个很好的例子是 pingdom.com 等服务,它允许您设置计时器并每 X 分钟向您的服务器发送一个 ping。如何实现? 我希望我不会因为问这个问题而受到很多负面影响,而且我也没有要求你们给我写代码。我只是想知道解决这个问题的稳健策略。 这是我的想法:

  1. 将结束时间保存在 db 中,并每秒使用一次 cron 作业检查时间是否已到(我认为这不是很好,因为查询和所有计算可能需要超过 1 秒)

  2. 以某种方式将变量分配给 setInterval 并将它们存储在全局列表中

【问题讨论】:

    标签: javascript node.js timer cron


    【解决方案1】:

    如果每个客户端都有自己的计时器,您的 Web 应用程序的 UI 会响应更快,并且您的后端会更好地扩展。关闭浏览器不会有问题。

    • 针对特定问题将endtime 保留在您服务器的数据库中。
    • 在客户端,从服务器检索endtime,并使用 JavaScript 创建一个计时器,提醒用户时间已到。
    • 在服务器端,如果答案是通过endtime 提交的,则会拒绝答案,以防止客户端作弊。

    【讨论】:

    • 问题是客户(回答的人)在 IRC 频道中,我无法为他们运行 javascript。唯一有权访问 UI(客户端代码)的人是创建问题的人,如果关闭浏览器,我无法将触发的事件发送到服务器。
    猜你喜欢
    • 2016-05-20
    • 1970-01-01
    • 1970-01-01
    • 2013-04-02
    • 1970-01-01
    • 2023-03-18
    • 2015-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多