我正在使用aws4来签署并从aws服务器中提取json数据。我得到了所有需要的json。但我想每5分钟提取数据,然后将数据推送到客户端。 我正在尝试使用
setInterval(function() {});
但它给了我错误,应用程序在第二个间隔后崩溃了。 第一个错误发生在第一个时间间隔
Error: Can't set headers after they are sent.
at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:344:11)
第二个间隔给我这个错误:
C:path\node_modules\express\lib\response.js:956
if (err) return req.next(err);
^
TypeError: req.next is not a function
at done (C:\path\node_modules\express\lib\response.js:956:25)
我还有另一个问题是,当我启动网络时,我必须等待5分钟才能启动网络,因为setInterval设置为5分钟:(
这是代码
router.get('/', function(req, res, next) {
var opts2 = {
method: 'POST',
host: host,
path: '/myPath/getMyJson',
region: 'us-east-1',
headers: {
'content-type': 'application/json'
}
};
aws4.sign(opts2, {accessKeyId: config.awsAccessKeyId, secretAccessKey: config.awsSecretAccessKey});
setInterval(function() {
var myStuff= [];
var responseString = "";
var req = https.request(opts2, function(res2) {
res2.on("data", function (data) {
responseString += data; // save all the data from response
});
res2.on("end", function () {
var jsonObject = JSON.parse(responseString);
myStuff= jsonObject.results;
res.render('myTest', { myStuff: JSON.stringify(myStuff) });
});
});
},500000);
});