socket.send вне io.sockets.on ()

У меня есть цикл, который непрерывно опрашивает базу данных. Когда запрос возвращает результат, приложение node.js отправит сообщение каждому клиенту, подключенному к серверу node через socket.io v0.8.

Проблема: io.sockets.broadcast.send ('msg') вызывается в середине цикла setInterval () , поэтому он не находится внутри io Функция обратного вызова .sockets.on () , поэтому она не будет работать. Когда используется io.sockets.send ('msg') , кажется, что никакое сообщение не отправляется клиенту.

Код Node.js

setInterval(function() {
    util.log('Checking for new jobs...');
    dbCheckQueue(function(results) {
        if (results.length) {
            io.sockets.broadcast.send('hello');
        }
    });
}, 10*1000);

Однако, если setInterval должен вызываться из io.sockets.on ('connection', ..) , каждый подключенный клиент создадим дополнительный шлейф!

Код Node.js

io.sockets.on('connection', function(socket) {
    setInterval(function() {
        util.log('Checking for new jobs...');
        dbCheckQueue(function(results) {
            if (results.length) {
                io.sockets.send('hello');
            }
        });
    }, 10*1000);
});

Clientside JS

        socket.on('hello', function() {
            console.log('HELLO received');
        })

* Как я могу запустить ОДИН цикл, но при этом иметь возможность отправлять сообщения всем подключенным клиентам?

22
задан Nyxynyx 26 November 2011 в 20:34
поделиться