Ввести задержку в данных, испускаемых сокетом - PullRequest
1 голос
/ 17 июня 2019

Я построил сокет соединения, в котором у меня есть график в frontEnd.Этот график обновляется на основе данных, предоставленных пользователем.На бэкэнде я излучаю данные (массив данных, отправляемых во внешний интерфейс).Можно ли ввести задержку между каждым значением массива, выдаваемого сокетом?

Я попытался поместить код в функцию setInterval, но вскоре осознал свою глупость.Я не знаю, как поступить.

io.sockets.on('connection', (socket) => {
    console.log(`new connection id: ${socket.id}`);
    socket.emit('test event', 'data is getting generated');
    //sendData(socket);
    socket.on('test', data => {
        console.log("DATA ", data);
        let start = data.start_val;
        const arr = [];
        while (start <= data.end_val) {
            arr.push(start);
            start = start + data.interval;
        }
        model.data.create({
            startvalue: data.start_val,
            endvalue: data.end_val,
            difference: data.interval

        });
        socket.emit('response', arr);
    });

})

Я отправляю 3 значения в бэкэнд Start_val, end_val и разность.Эти значения используются для генерации данных.Например - Ввод: - start_val = 10, end_val = 30, разница = 30. Тогда отправленный обратно массив равен [10,20,30].Теперь я хочу подчеркнуть, если я могу обеспечить задержку в 1 секунду между каждым значением массива.то есть 10 должны прийти на 1-й секунде, 20 должны прибыть на 2-й секунде и так далее.Любая помощь очень ценится.

1 Ответ

0 голосов
/ 17 июня 2019

Как насчет зацикливания данных и использования функции setTimeout, которая увеличивает задержку при каждой итерации:

for (let x = 0; x < arr.length; x++) {
    setTimeout(()=>{
        socket.emit('response', [arr[x]]);
    }, 1000 * (x+1));
}

Вам придется отправлять обратно только 1 номер за раз. Здесь мы должны отправить обратно [10] ... так что на клиенте вам нужно будет обработать способ получения этих данных и поместить их в массив, используемый для графа, или что-либо, считывающее эти данные после отправки.

Другой возможностью является введение этой задержки на стороне клиента этого приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...