2016-09-22 5 views
0

Я делаю небольшой тест с холстом и Node.js, у меня есть это в моем server.js:Node.js с Socket.IO SetTimeout не работает

function updateAllClients() { 
    io.sockets.emit('update', {x:x, y:y}); 
    x++; 
    y++; 
    t = setTimeout(updateAllClients, 100); 
} 
updateAllClients(); 

И в моем клиенте:

socket.on('update', function(data) { 
    animate(data.x, data.y); 
}); 

Я проверил все функции и они работают, но SetTimeout не работает ...

+1

Есть ли ошибки в консоли? Где объявляются 'x',' y' и 't'? Правильно ли инициализирован 'io'? Здесь нет достаточного количества для нас, без дополнительной информации. – jfriend00

ответ

0

это работает для меня, когда я положил updateAllClients() внутри io.on («связи» .. .), что-то вроде этого:

function updateAllClients() { 
    io.socket.emit('update', {x:x, y:y}); 
    x++; 
    y++; 
    setTimeout(updateAllClients, 100); 
} 

io.sockets.on('connection', function (socket) { 
    updateAllClients(); 
} 
+0

Спасибо! он работает –

+0

Это действительно пример того, как socket.io разбивает все между версиями. В ревизии, которую я попробовал год назад, определенно не было проблемой использовать io.blahblah внутри глобально-контекстного setTimeout. Команда Socket.io определенно знает, как держать всех на ногах – cyphunk

Смежные вопросы