为了学习 node.js,我正在创建一个小应用程序,它获取一些存储在 mongoDB 中的 rss 提要,处理它们并从这些提要中创建一个提要(按日期排序)。
它解析约 50 个 rss 提要的列表,其中包含约 1000 个博客项目,因此解析整个内容的时间很长,所以我放了以下内容req.connection.setTimeout(60*1000);
以获得足够长的时间来获取和解析所有提要。
一切都运行得很好,但是请求被调用了两次。(我检查了wireshark,我不认为这与favicon有关)。
我真的不明白。
你可以在这里测试自己:http: //mighty-springs-9162.herokuapp.com/feed/mde/20(它应该创建一个包含最近 20 篇关于“mde”的文章的 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 函数仍然被调用了两次。
那里有什么问题?任何想法?