2016-04-22 100 views
0

某个特定时刻的功能是有办法自动化功能,并在特定的时间mooment与Node.js的给他们打电话?更确切地说,我想用节点js创建一个提醒。当我收到用户的日期时,我必须发送通知来提醒他/她。呼叫在的NodeJS时间

我知道setTimeout()函数,但是当我拥有庞大的用户数据库时它真的是个好主意吗?

谢谢。

+1

我会打开通知例程到微服务,并有一个cron作业执行服务,它看起来通知在运行时发出,一旦发送就将其清除。这样,如果服务器重新启动,您不会失去setTimeouts。 – dandavis

+0

好主意,非常感谢 –

回答

2

您可以使用setTimeout()并保留服务器内的所有工作,但对于大量用户,您不一定要为每个用户设置超时。您真正需要的是需要通知的下一个用户的单个超时。当该计时器触发时,您随后为需要通知的下一个用户设置计时器等等。

这可以通过按通知时间排序的对象数组来完成。每次向数组添加内容时,都会取消当前计时器,将新通知添加到数组中,对数组进行排序并为最早通知设置计时器。

当计时器触发时,将从数组中移除该项目并计划下一个项目。

而且,由于您可能希望在服务器重新启动时保持这种状态,因此每次修改时都会将通知数组(可能采用JSON格式)保存到文件或数据库,以便在重新启动服务器时重新加载该数据。

仅供参考,如果您希望拾取其他人已经编写的代码,那么已经提供了此类功能的node.js的调度模块。其中一些模块的

例子:

node-cron

agenda

node-schedule

0

你在找什么叫做Scheduler或cron作业(它的起源来自Linux操作系统)。

在NodeJS中,您可以找到实现相同想法的node-schedule