2016-04-22 101 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