在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时间之后发生。
- 在使用Google Closure Compiler,webpack和Firebase JS SDK编译js时出现JSC_NON_GLOBAL_DEFINE_INIT_ERROR
- 如何将浏览器端的客户端值传递给node.js控制器
- node.js / express.js中的variables作用域
- 当用Grunt启动Nightwatch时,网站服务器未启动
- 如何打印从服务器收到的HTML页面?
- NodeJS与promise.catch和console.log的错误?
- 与expressjs不工作,404错误的instagram
- Google表格API node.js快速入门不起作用:API返回错误:错误:unauthorized_client
- 使用node.js过滤来自json数据的值