$ npm install protomux-rpc-client-poolReliably connect to one of a pool of protomux-rpc servers.
Picks a random server to connect to, and keeps connecting to that server, unless it fails to respond, in which case it automatically switches over to another one.
npm i protomux-rpc-client-pool
const pool = new ProtomuxRpcClientPool(keys, rpcClient, opts)Create a new pool. keys is a list of HyperDHT servers that expose the same protomux-rpc service. rpcClient is a Protomux RPC client instance.
opts include:
retries : the number of times to retry a request with a different server before giving up. Default: 3.rpcTimeout : the default timeout for a single request attempt, in ms.totalTimeout: the default timeout for the entire request, in ms. This timeout operates independently of rpcTimeout.rateLimit: bucket rate limit configratelimit.capacity: max tokens (burst capacity). Set to -1 to disable the rate limit.ratelimit.intervalMs: time interval in milliseconds to refill 1 tokenawait pool.makeRequest(methodName, args, opts)Makes a request for the specifed methodName to one of the servers in the pool, passing the args. If the server fails to respond, it automatically retries with other servers.
Throws a ProtomuxRpcClientPoolError.TOO_MANY_RETRIES error if the request attempt fails pool.retries times.
Throws a ProtomuxRpcClientPoolError.POOL_REQUEST_TIMEOUT error if the request exceeds total timeout.
opts include:
requestEncoding the request encoding of the RPC serviceresponseEncoding the response encoding of the RPC servicerpcTimeout the timeout to use for each request attempt (in ms). Defaults to pool.rpcTimeout.totalTimeout the timeout for entire request (in ms). Defaults to pool.totalTimeout.pool.destroy()Destroy the pool, cleanup the ratelimit