node.js を学習するために、mongoDB に保存されているいくつかの RSS フィードを取得し、それらを処理して、これらのフィードから単一のフィード (日付順) を作成する小さなアプリを作成しています。
約 1000 個のブログ アイテムを含む約 50 個の RSS フィードのリストを解析するため、全体を解析するには非常に長いため、req.connection.setTimeout(60*1000);
すべてのフィードを取得して解析するのに十分な時間を確保するために、次のように記述します。
すべてが正常に実行されますが、リクエストが 2 回呼び出されます。(wiresharkで確認しましたが、ここではファビコンについてではないと思います)。
私は本当にそれを取得しません。
ここでテストできます: http://mighty-springs-9162.herokuapp.com/feed/mde/20 (「mde」に関する最新の 20 件の記事を含む RSS フィードを作成する必要があります)。
コードはこちら: https://github.com/xseignard/rss-unify
そして、興味深い部分に焦点を当てると:
私はこのように定義されたルートを持っています:app.get('/feed/:name/:size?', topics.getFeed);
は次のtopics.getFeed
ようになります。
function getFeed(req, res) {
// 1 minute timeout to get enough time for the request to be processed
req.connection.setTimeout(60*1000);
var name = req.params.name;
var callback = function(err, topic) {
// if the topic has been found
if (topic) {
// aggregate the corresponding feeds
rssAggregator.aggregate(topic, function(err, rssFeed) {
if (err) {
res.status(500).send({error: 'Error while creating feed'});
}
else {
res.send(rssFeed);
}
},
req);
}
else {
res.status(404).send({error: 'Topic not found'});
}};
// look for the topic in the db
findTopicByName(name, callback);
}
特別なことは何もありませんが、それでも、この getFeed 関数は 2 回呼び出されます。
何が問題なのですか?何か案が?