Я хочу выводить в график данные, которые посредством вебсокета передаются клиенту. Итак, передаем серверу {start: 0, end: 100}
{start: 0, end: 100}
{start: 100, end: 200}
Сервер отдает
{data: [{}], count: 554291}
1. Нужно на основании count останавливаться
2. Работа с вебсокетами асинхронная и поэтому не получится(скелетон, нет проверки первого пункта)
var ws = new WebSocket('ws://' + window.location.hostname + ':8001/chart/');
var wsSend = function(data) {
if (!ws.readyState) {
setTimeout(function() {
wsSend(data);
}, 100);
} else {
ws.send(data);
}
};
// wsSend('{"count": 12, "offset": 0}');
// обработчик входящих сообщений
ws.onmessage = function(event) {
if (event.data) {
wsRecv(event.data);
};
};
function sleep1(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
// get data from srv
async function getData(start, end) {
var start = start;
var end = end;
for (var i = 0; i < 100; i++) {
console.log('start: ' + start + " " + 'end: ' + end);
start += 100;
end = start + 100;
wsSend(JSON.stringify({
"offset": start,
"count": end
}));
};
};
function wsRecv(msg) {
var res = JSON.parse(msg);
// console.log(res[0]['data'].length);
for(var i = 0; i < res[0]['data'].length; i++) {
data.addRow(['test ' + i, res[0]['data'][i]['cur_usd']]);
};
drawChart();
}
drawChart();
getData(0,100);
Google chart не умеет сортировать данные при data.addRow(), поэтому надо где-то данные хранить и сортировать их. Или вообще как решать эту задачу?