每5分钟从aws中拉出json,并使用nodejs将信息推送到客户端

时间:2016-11-21 16:31:58

标签: json node.js amazon-web-services

我正在使用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);
 });

0 个答案:

没有答案