无法在socket.io事件上设置间隔

时间:2014-08-10 00:21:24

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

有没有办法在保持时间控制的同时拆分和循环每个客户端?我需要发出所有推文,但每个推文之间有一段时间。到目前为止,这是抛出异常的代码:

var socketList = new Array();
io.on('connection',function(socket){
    socketList.push(socket);
});

setInterval(function() {
    socketList.forEach('tweet', function(tweet) {
        io.sockets.emit('info', {tweet: tweet});
    });
}, 2000);

此代码有效,但过快地推送推文:

io.on('connection', function (socket) {  
    stream.on('tweet', function(tweet) {
        socket.emit('info', {tweet: tweet});
    });
});

编辑此代码不会出现任何错误,但不会传输任何推文:

var io = require('socket.io').listen(server);
var stream = T.stream('statuses/filter', { track: 'lol' })

var socketList = new Array();
io.on('connection',function(socket){
    socketList.push(socket);
});

function EmitTweets() {
    stream.socketList.forEach('tweet', function(tweet) {
        io.sockets.emit('info', {tweet: tweet});
    });
    setTimeout(EmitTweets, 1000);
}

不确定在哪里调用“stream”

1 个答案:

答案 0 :(得分:0)

setInterval是同步的。试试这个:

function emitTweets() {
  socketList.forEach('tweet', function(tweet) {
    io.sockets.emit('info', { tweet: tweet });
  });

  // this is the part that makes it repeat
  setTimeout(emitTweetes, 2000);
}