Twitter流api node.js - 减慢流的速度

时间:2016-01-13 16:29:25

标签: javascript node.js api twitter socket.io

我正在创建一个应用程序,允许您搜索某个位置,然后显示与该位置相关的过滤后的推文Feed,问题出在“伦敦'伦敦'有这么多的实时推文,这些推文移动得如此之快,以至于你无法阅读它们。

我不知道是否应该停止并启动套接字?或者将所有推文推到前面的数组中然后附加它们,但数组很容易变得太大。此外,一些搜索将非常缓慢,因此不需要一直进行。

我已经使用node和express构建了它,任何想法如何处理这个数量,如果数据将被欣赏。

示例代码 - 后端

    var place = [ '-122.75', '36.8', '-121.75', '37.8' ]
    var stream = twitter.stream('statuses/filter', { locations: place, language: 'en' })

   stream.on('tweet', function (tweet) {
     console.log(tweet)
   })

   io.on('connect', function(socket) {

  // this is coming from the twit module. 
  // 'tweet' is one of the events it listens to
     stream.on('tweet', function(status) {

   // this is our own channel we set up to to send the tweets down to the client
    var data = {};
    data.name = status.user.name;
    data.screen_name = status.user.screen_name;
    data.text = status.text;
    data.user_profile_image = status.user.profile_image_url;

    socket.emit('statuses', data);
  });
});

1 个答案:

答案 0 :(得分:0)

您可以尝试使用readable.pause()函数 - 这里有更多参考:https://nodejs.org/api/stream.html#stream_readable_pause

基本上你可以用.pause()暂停流,当你再次阅读时,你可以调用.resume()。

另一个想法是以某种方式过滤数据。当你放慢速度时,一小时后你会在主流后面一个小时"。