私は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
ここに問題があるのかどうかわかりませんが、エラーが発生した場合など、すべてのコードパスで 'r.end'を呼び出さないでください。 Btwこれは "運命のピラミッド"の完全な例です、私はプログラムを再構成することを検討するでしょう。 –
あなたはプログラムを再構成する必要があるとのヒントや理論はありますか? – John
また、常にデータベース接続を解放しているとは限りません。したがって、プールには使用可能な接続が残っておらず、接続が解放されるのを待っています。 – robertklep