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 ?
You can create a sleep function using promises and setTimeout:
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}