У меня есть цикл, который непрерывно опрашивает базу данных. Когда запрос возвращает результат, приложение 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');
})
* Как я могу запустить ОДИН цикл, но при этом иметь возможность отправлять сообщения всем подключенным клиентам?