我有一个显示推文的nodejs示例我正在使用socket.io和twitter搜索流。示例位于http://young-plains-8080.herokuapp.com/,我已在https://github.com/najamsk/twitterstream上传了来源。
我的演示非常快速地呈现推文,并且用户无法读取流。我试图在收到推文并在客户端上呈现它后添加延迟。我在客户端尝试了setTimeout,但它只适用于第一条推文。我没有对传入的请求进行阻塞,而是坚持这个延迟任务。
答案 0 :(得分:1)
setTimeout在这里不会帮到你。如果你系统地推迟每条推文的相同超时,一旦第一条推文到达,另一条推文将以与以前相同的速度继续弹出...
这是一个想法:
var allTweets = [];
t.stream('statuses/filter', { track: ['gaza'] }, function(stream) {
stream.on('data', function(tweet) {
// when a tweet arrives, add it to my global array of tweets plz
allTweets.push(tweet);
});
});
setInterval(function(){
// every 1000ms take the oldest tweet of the array a send it to me
var nextTweet = allTweets.shift();
if (nextTweet) {
io.sockets.emit("tweet", nextTweet);
}
}, 1000);