【问题标题】:nodejs twitter stream need delay between tweetsnodejs twitter流需要推文之间的延迟
【发布时间】:2014-07-29 15:43:46
【问题描述】:

我有一个 nodejs 示例,它显示了我正在使用 socket.io 和 twitter 搜索流的推文。示例可在http://young-plains-8080.herokuapp.com/ 获得,我已在https://github.com/najamsk/twitterstream 上传源代码。

我的演示正在非常快速地渲染推文,并且用户无法读取流。我正在尝试在收到推文并将其呈现在客户端后添加延迟。我已经在客户端尝试了 setTimeout,但它只适用于第一条推文。我被困在这个延迟任务上,而没有引入对传入请求的阻塞。

【问题讨论】:

标签: node.js


【解决方案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);

【讨论】: