将回调与套接字 IO 一起使用



我正在使用节点和套接字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);
    });

我认为您误解了.on()如何用于流。 它是一个事件处理程序。 安装后,它就在那里,流可以随时呼叫您。 您的间隔实际上只会让事情变得更糟,因为它正在安装多个.on()处理程序。

目前还不清楚你所说的"数据来得太快"是什么意思。 太快了什么? 如果它只是比你想要的显示速度快,那么你可以将推文存储在一个数组中,然后使用计时器来决定何时显示数组中的内容。

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

最新更新