I've been trying to use the @solana/web3.js library to send RPC requests for transaction data but I'm getting hit with the following error:
Error: 429 Too Many Requests: {"jsonrpc":"2.0","error":{"code": 429, "message":"Too many requests for a specific RPC call, contact your app developer or [email protected]."}
I've realized that the solution lies in the Retry-After HTTP response header. I have to obtain this header to know how long I need to wait for the rest of the requests to execute properly without error. My only problem is that I don't know how to access this response header in @solana/web3.js.
Here are the requests:
function delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function rpcRequests() {
try {
const Signatures = await connection.getSignaturesForAddress(address, options);
Signatures.forEach(signature => {
if (signature && signature.signature && signature.err === null) {
SignaturesArray.push(signature.signature);
}
});
await delay(1000);
const Transactions = await connection.getParsedTransactions(SignaturesArray, GetVersionedTransactionConfig);
Transactions.forEach(transaction => {
if (transaction && transaction.transaction && transaction.transaction.message && transaction.transaction.message.instructions) {
const instructions = transaction.transaction.message.instructions;
instructions.forEach(instruction => {
console.log(instruction);
}
})
}
})
} catch (error) {
console.error('Error: ' + error);
}
}
rpcRequests();
(I'm only showing a portion of the code, there are 6 more requests that need to be sent)