@viskeg

Как передать последовательно много данных через Socket.io?

С серверной стороны делается SQL запрос, в результате получается очень много данных. В среднем 15к строк. После этот кусок строк сортируется по дате, где дата ключ массива, и значение каждого - список объектов на ту дату. Т.е. что-то типа:

points[row.time_update] = [ {val1: 1, val2: 123, val6:321}, {val1: 21, val2: 777, val6:2} ... ]

Т.е. вариант решения проблемы через limit\offset у меня не канает. И в чем проблема:

на клиентской стороне висит код (код везде примерный, но суть отражает):
socket.on('update_recv', function(data) { 
  console.log(data);
});


на серверной висит такой:
socket.on('update', function(data){ 
   knex(sql .... ).then(function(rows){
      // обрабатываем строки, собираем массив points требуемого формата. 
      
     var keys = Object.keys(points); // необходимость выдавать порционно по датам
     for( var k in keys )
     {
       // вот тут начинается неведомая мне магия. Если брякнуть после socket.emit
       // то данные прилетают. т.е. 1 раз. в ином случае цикл идет, но на фронт
       // ничего не приходит. 
       socket.emit('update_recv', {result: JSON.stringify(points[keys[k]]) })
       sleep.sleep(3); // нужна задержка, пока грубая
      }
   });
});


Как мне последовательно, с временными промежутками, передать кучу строк на фронт? Передавать одной "пачкой", с последующей там обработкой, считается не очень разумным, плюс всеравно не передается.
  • Вопрос задан
  • 237 просмотров
Пригласить эксперта
Ответы на вопрос 1
С мобилы плохо видно, но данные тянут на экономную упаковку
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы