2016-01-19 6 views
0

Я делаю модуль с именем rooms.js для моей игры в socket.io и canvas, и я имею функцию синхронизации с клиентом данные пользователей, как объект, но setInterval не работает на моей функции Rooms.Listener() клиент только получить данные 4 раз с setInterval на 1мс, но только один раз с 10мс.

Код:NodeJS не setInterval работает

Listener: function() { 
    setInterval(function() { 
     // send data to client every 1ms 
     Rooms.ListUsers(); 
    }, 1); 
}, 
ListUsers: function() { 
    for(var roomID in Rooms.Obj) { 
     var room = Rooms.Obj[roomID]; 
     // send users data to client 
     room.users.forEach(function(uid) { 
      var socketID = users.getSocketIDbyId(uid); 
      var data = Rooms.getUsersInRoomData(roomID); 
      fiveSocket.emitClient(socketID, headers.roomUsers, data); 
     }); 
    } 
}, 
getUsersInRoomData: function(roomID) { 
    var room = Rooms.Obj[roomID]; 
    var obj = {}; 
    room.users.forEach(function(uid) { 
     var user = users.Obj[uid]; 
     obj[uid] = { 
      username: user.username, 
      position: user.position, 
      figure: user.figure 
     }; 
    }); 
    return obj; 
}, 

Где проблема? Спасибо

+0

сделал отлаживать его каким-то образом? Где вызывается «Listener»? –

+0

Слушатель вызывается в конце модуля, перед module.export –

+0

Большинство браузеров имеют минимум 4 мс на setInterval(), ваш установлен в 1 мс. Установите его выше минимума, если не по какой-либо другой причине, кроме как исключить его. – Nocturno

ответ

0

Двойная проверка ваших методов отдельно. Сам код должен работать, проблема может быть внутри ваших внутренних методов.

var Rooms = { 
 
    Listener: function() { 
 
    setInterval(function() {   
 
     Rooms.ListUsers(); 
 
    }, 1000); // change to 1ms if necessary 
 
    }, 
 

 
    ListUsers : function() { 
 
    document.body.innerHTML += Date.now() + "<br />"; 
 
    } 
 
}; 
 

 
Rooms.Listener();

+0

SetTimeout работает в этом случае, у меня есть дата в timestamp, зарегистрированная на моей консоли каждые 1000 мс –