protomux-rpc-client-pool
v2.2.0
Published
Reliably connect to one of a pool of protomux-rpc servers
Downloads
7,741
Readme
Protomux RPC Client Pool
Reliably 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.
Install
npm i protomux-rpc-client-poolAPI
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 ofrpcTimeout.rateLimit: bucket rate limit configratelimit.capacity: max tokens (burst capacity). Set to-1to disable the rate limit.ratelimit.intervalMs: time interval in milliseconds to refill 1 token
await 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:
requestEncodingthe request encoding of the RPC serviceresponseEncodingthe response encoding of the RPC servicerpcTimeoutthe timeout to use for each request attempt (in ms). Defaults topool.rpcTimeout.totalTimeoutthe timeout for entire request (in ms). Defaults topool.totalTimeout.
pool.event(methodName, args, opts)
Creates a fire-and-forget event call to the currently selected server in the pool. The methodName and args parameters follow the same contract as pool.makeRequest(...).
opts include:
requestEncodingthe request encoding of the RPC service
pool.destroy()
Destroy the pool, cleanup the ratelimit
