在Node.js中保持setTimeout和setInterval重新启动
我设置了相当多的服务器端超时setTimeout和setInterval每个连接的用户可以持续10-30秒。 如果Node.js实例在其中一个超时期间重新启动,显然它们在重新启动时会被清除,这可能会给这些用户带来一些问题。 我将如何去坚持这些超时,还是有任何模块已经帮助了这个?
我会将开始时间和持续时间存储在Redis中,并在应用程序重新加载时重新启动不完整的定时器。 一些Redis模块:
https://github.com/joyent/node/wiki/modules#wiki-db-nosql-redis
setTimeOut
以延迟为参数,所以当设置超时时,捕获' currentServerTime + delay
'说' serverTriggerTime
'并将其保存在数据库中。 然后,在重新启动服务器时,使用serverTriggerTime
创build相同的计时器。 然后, delay = serverTriggerTime - currentServerTime
,使用这个延迟来设置新的定时器。
设定计时器时
const date = Date.now(); const serverTriggerTime = +date + +delay; //time in milliseconds
在服务器重启时:
serverTriggerTime = //retrieve from DB. newDelay = serverTriggerTime - Date.now();
另外,只有在newDelay> = 0的情况下才能设置新的定时器,这意味着触发时间还没有达到,并且会在newDelay时间之后发生。
- Nodejs bcrypt库
- 服务器端未定义的renderProps / React / React-Router + Node / Express.js的同构渲染
- Node.js – 不能删除用createWriteStream创build并写入的文件
- 如何从基于对象的语言转移到服务器端Node.js JavaScript的大项目?
- 当我使用'npm start'命令时,找不到名字'Promise'错误
- JIMP在nodejs中无效的文件签名
- 使用断言来validation函数参数是一个不好的做法吗?
- 节点证书存储是否只读取硬编码证书列表中的节点?
- 鉴于JavaScript已经closures,这个关键字的目的究竟是什么?