在Node.js中,超时后取消传入请求

时间:2013-12-09 07:14:36

标签: javascript node.js timer

我有一个用Node.js编写的http服务器,基本上工作正常。

它的作用是将传入的请求中继到Web服务。如果Web服务做出反应,我的Web服务器会转换答案并将其发送回客户端。到目前为止,非常好。

现在我想要的是某种超时:如果网络服务需要很长时间才能做出反应(比方说,超过5秒),我不想再等待并发送回500给客户。

我知道我可以通过在请求的开头使用setTimeout并在稍后取消它来执行此操作,但这意味着我创建了数百或数千个并发计时器 - 其中大部分完全不相关,因为结果将在不到5秒钟内完成。

我担心由于内存使用和/或性能,这可能是一个坏主意。这是正确的,还是像这样解决这个要求没问题?

如果 是个坏主意,可能是什么解决方案?我已经想到了一个每秒钟滴答的全局计时器,每个请求都订阅了这个计时器,并且有一个内部计数器,并在其内部计数器高于5时发送500。这将减少所需的计时器数量为1,但意味着每个请求必须正确订阅并且(更重要的是)取消订阅全局计时器。

还有哪些其他选择?

0 个答案:

没有答案