2017-06-04 8 views
0

私はidを持つajaxコールを受け取るnode rest API関数に、urlリンクを再起動するようにしました....このajax関数を5回呼び出すと動作します。それが動作していない時間.. console.logを使用して私はその行が要求を取得するのを停止し、私は再び同じログを取得したら... url(urlが有効です)から要求を取得しているので...私はその要求モジュールを参照してくださいその要求の接続は、各応答が、要求モジュール停止後に閉じられているので、私は5日アヤックス後に動作r.end()を使用してみてくださいNodeJSリクエストモジュールが6つのajaxリクエストの後に動作しなくなる

apiRoutes.post('/restart_stream', function(req, res) { 
/* GET - token */ 
var token = req.headers['x-access-token']; 
    token = decrypt(token); 
    console.log('called.../restart_stream'); 

/* GET - data id */ 
var data  = {}; 
data.id  = req.body.id; 
data.type = req.body.type; 

    /* GET - connection */ 
    pool.getConnection(function(err,connection){ 
     if (err) { 
      connection.release(); 
      res.json({"code" : 100, "status" : "Error in connection database"}); 
      return; 
     } 

     /* GET - stream url */ 
     connection.query("SELECT id, channel, JSON_UNQUOTE(json_extract(stream, '$[0]')) AS stream_url FROM streams WHERE id=?", [data.id],function(err, rows, fields){ 
     console.log('getting request to...'+rows[0].stream_url); 
      /* GET - stream status */ 
      var r = request 
       .get(rows[0].stream_url) 
       .on('response', function(response) { 
        console.log('resoponse received....'+response.statusCode); 
        /* CHECK - stream exists */ 
        if (response.statusCode != 200 && response.statusCode != 302) { 
         r.end(); 
         /* RESET - live&streams info */ 
         res.json({"status": "false", "message": "FAILED to Restart <b>"+rows[0].channel+"</b>!"}); 
        } else { 
         /* RESET - live&streams info */ 
         connection.query("UPDATE streams SET uptime=?, status=? WHERE id=?",['0', '1', data.id], function(err) { 
          /* CHECK - error */ 
          if (err) { 
           res.json({"status": "false", "message": err.message}); 
          } else { 
           /* STOP - url my code here that is not executed after 6 ajax call */ 


           r.end(); 

           res.json({"status": "true", "message": "RESTARTED Successfully!"}); 
          }; 
         }); 
        }; 
       }) 
     }); 
    }); 
} else { 
    res.json({"status": "false", "message": "FAILED"}); 
}; 
}); 

:任意の偶数のエラーまたは要求応答コードを返していないことは...ここに私のコードです私は間違って働いていますか?

これは、応答コードをURLおよび取得するために接続するノード要求モジュールです:

https://www.npmjs.com/package/request 
+0

ここに問題があるのか​​どうかわかりませんが、エラーが発生した場合など、すべてのコードパスで 'r.end'を呼び出さないでください。 Btwこれは "運命のピラミッド"の完全な例です、私はプログラムを再構成することを検討するでしょう。 –

+0

あなたはプログラムを再構成する必要があるとのヒントや理論はありますか? – John

+0

また、常にデータベース接続を解放しているとは限りません。したがって、プールには使用可能な接続が残っておらず、接続が解放されるのを待っています。 – robertklep

答えて

0

私が正常に今日だった問題を解決する...問題は、私はノードのjs(V0の古いバージョンを使っているということでした。 10.25)v7.10.0にアップグレードして、すべてが動作しています。私は100回のリクエストをしていました。うまく動いています...また、以前はノードjsの新しいバージョンが巨大なパフォーマンスの向上を伴います。

関連する問題