我正在制作一个Node.js服务,它需要发出HTTP GET请求,并在遇到503响应时重试它们。
来自W3.org' Header Field Definitions:
Retry-After响应标头字段可与503一起使用(服务 不可用)响应以指示服务预期的时间 请求客户端无法访问。 [...]此字段的值 可以是HTTP日期或整数秒(in 十进制)在响应时间之后。 [...]两个使用它的例子 是
Retry-After: Fri, 31 Dec 1999 23:59:59 GMT Retry-After: 120
我想使用此信息在适当的时间触发重试。这很容易用秒,因为我可以轻松地将它们转换为毫秒和setTimeout(fn, ms)
。 HTTP日期版本要困难得多。我需要找到服务器的时区,将提供的日期转换为该时区,从提供的时间中减去当前时间,将结果转换为毫秒,然后setTimeout(fn, ms)
如果ms
为正
当然,我可以做到这一切,但我希望已经有一个库可以存在,因为这似乎是一件相当常见的事情。但是,我似乎无法找到一个。任何线索?
答案 0 :(得分:1)
怎么样
var d = new Date("Tue, 19 Aug 2014 13:50:59 GMT"); // d is in your timezone now
d.setSeconds(d.getSeconds()+120);
var diff = d.getTime()-Date.now();
if (diff>0) var tId=setTimeout(something,diff);