我正在创建一个仪表板,它将在制作时在地图上绘制启用地理的推文。最大的问题是,为了让我模拟它是真实的,每秒钟都会发出一个新的请求。
根据 Twitter 的 API 限制,对于 unAuth/OAth(分别),REST API 调用限制为每小时 150/350,因此每秒调用一次是行不通的。也许我不得不接受刷新延迟,但我很好奇是否有解决方法。
有没有办法让我拥有一个真正的实时提要,一旦用户发布推文,它就会在地图上放置一个点?
这是我的代码的一部分以供参考:
// url is set above with the search query
function firstQuery(terms, oldestTweet, page, pic) {
getLimiter++;
var encodedTerms = encodeURIComponent(terms);
$.getJSON(url + '&page=' + page + '&max_id=' + oldestTweet + '&include_entities=1&result_type=recent&rpp=100&callback=?', function(tweets) {
if ($(tweets.results).length) {
if (storedLatestTweet < tweets.results[0].id) {
storedLatestTweet = tweets.results[0].id;
}
page++;
tweetCount = tweetCount + tweets.results.length;
storedOldestTweet = tweets.results[tweets.results.length - 1].id;
harvest(tweets, pic);
firstQuery(terms, oldestTweet, page, pic);
} else {
// continue to loop if more need to be plotted with the oldest tweet id known
if (getLimiter < 65 && tweetNumber < 10) {
page = 1;
firstQuery(terms, storedOldestTweet, page, pic);
}
return latestLoop(); // loops the request
}
});
}
function latestLoop() {
latest(terms, storedLatestTweet, page, pic);
// use queryLoop so that the timeout can be killed on new search
queryLoop = setTimeout(function() {
latestLoop();
}, 1000); // the loop rate of the request...1 second isn't gonna work
}