Создание задержки между записью в сокеты - PullRequest
0 голосов
/ 15 мая 2019

Мое веб-приложение NodeJS, использующее ExpressJS, получает данные из приложения Android. При получении данных мы отправляем данные на другой сервер через поток сокетов TCP / IP.Все работает нормально, но так как данные отправляются с очень хорошей скоростью, соединения для некоторых транзакций на сервере отклоняются.Нам нужно создать задержку между вызовами API или записью Socket, чтобы соединение не отказывало.Вот мой код

  function send(data, tr_id, server_ip, port) {


    var client = new net.Socket();
    client.connect(port, server_ip, function () {
    try    {     
        console.log('Connected');
        client.write(data);
    } catch (error) {
        console.log("Send function error " + error);
    }
    });
    client.on('data', function (data) {
        console.log('Received: ' + data);
        //set the flag 1 in tbl_transactions    
        if (data.includes("status='ACK'")) {
            dbConn.query("UPDATE  tbl_transaction set flag='1' where tr_id =" + tr_id, function (err, rows, fields) {
                if (err)
                    console.log('error occured in updating flag - ' + err.code + " ,error_description - " + err);
            });
        }
        client.destroy(); // kill client after server's response
    });
    client.on('close', function () {
        console.log('Connection closed');
    });
    client.on('error', function (error) {clearImmediate
      console.log(error);
    });
} 

Я пробовал таймеры, но не будет ли другого надежного решения?

Ответы [ 2 ]

0 голосов
/ 15 мая 2019

Оберните setTimeout вокруг вашего запроса на обновление, на 1 секунду задержки:

 setTimeout(function(){
     dbConn.query("UPDATE  tbl_transaction set flag='1' where tr_id =" + tr_id, function (err, rows, fields) {
         if (err)
            console.log('error occured in updating flag - ' + err.code + " ,error_description - " + err);
     });

 }, 1000);
0 голосов
/ 15 мая 2019

Вы можете создать функцию сна, используя обещания и setTimeout:

function sleep(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...