使用Socket IO的回调

时间:2015-01-24 02:10:27

标签: node.js twitter socket.io twitter-streaming-api

我正在使用node和socket io将Twitter提要流式传输到浏览器,但是流速太快了。为了减慢速度,我试图使用setInterval,但它只是延迟了流的开始(没有在推文之间设置均匀的间隔)或者说在广播时我不能使用回调。下面的服务器端代码:

function start(){

stream.on('tweet', function(tweet){

if(tweet.coordinates && tweet.coordinates != null){
    io.sockets.emit('stream', tweet);
    }       

});
}

  io.sockets.on("connection", function(socket){
   console.log('connected');    

   setInterval(start, 4000);

    });

1 个答案:

答案 0 :(得分:0)

我认为你误解了.on()对流有用的方式。这是一个事件处理程序。一旦安装完毕,它就在那里,流可以随时给你打电话。你的间隔实际上只是让事情变得更糟,因为它正在安装多个.on()处理程序。

目前还不清楚“数据过快”的含义。什么太快了?如果它只是比您想要显示它更快,那么您可以将推文存储在一个数组中,然后使用计时器来决定何时从数组中显示内容。

如果来自流的数据来得太快甚至无法存储且这是一个流动的nodejs流,那么您可以使用.pause()方法暂停流,然后,当您再次进入时,可以致电.resume()。有关详细信息,请参阅http://nodejs.org/api/stream.html#stream_readable_pause