Search code examples
node.jssocketstcp

Creating delay between writing to sockets


My NodeJS web application using ExpressJS is receiving data from Android Application .On receiving data we are sending data to another server through TCP/IP socket stream . Everything is working fine but since the data is being sent at very good speed the connections get refused for some of the transactions by server . We need to create delay between API calls or Socket writing so that the connection doesn't refuse . Here is my code

  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);
    });
} 

I have tried timers but it wont work any other robust solution ?


Solution

  • You can create a sleep function using promises and setTimeout:

    function sleep(ms) {
        return new Promise(resolve => setTimeout(resolve, ms));
    }