С серверной стороны делается 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); // нужна задержка, пока грубая
}
});
});
Как мне последовательно, с временными промежутками, передать кучу строк на фронт? Передавать одной "пачкой", с последующей там обработкой, считается не очень разумным, плюс всеравно не передается.