RESTFULL服务中的settimeout



我正在使用 node.js express 编写服务。我有计时器的问题。

我根本不存储任何状态,在我的路由中具有2个功能

rout.js

var timeOutId;
exports.linkUpRequest = function() {
   // do some request to another user => insert record in db
   ...
   timeOutId = setTimeout(function() {
     //delete request => delete record from db
   }, 1000 * 60 * 60);
   res.send(...);
};

exports.confirm = function() {
   // record will be stored until user explicitly delete it => update that user confirm request
   clearTimeout(timeOutId);
   res.send(...);
};

我知道这是错误的解决方案,因为它是服务器,许多用户可以访问timeOutId变量。我的问题是如何处理 REST 服务中的计时器和超时ID。

注意:在评论中,我调用了我的模型的方法,这也是无状态的。

跟踪所有计时器参考并不容易。您可以做的一件事是针对每个请求存储确认状态。确认后,将状态设置为确认。在计时器结束时删除记录之前,请检查此状态,如果确认,请勿删除请求。这样,您将不会取消计时器以确认请求,但是这些请求不会在超时时删除。