Universal JS client for micro-rpc
npm install @bufferapp/micro-rpc-clientmicro-rpc-client will be unmaintained and deprecated. 
Universal JS RPC Client https://github.com/bufferapp/buffer-rpc/
Create an RPC Client and call an add function
``js
const RPCClient = require('micro-rpc-client');
const client = new RPCClient({
url: 'https://localhost:3000/rpc',
});
const main = async () => {
const result = await client.call('add', [1, 2]);
console.log(result); // 3
};
main();
`
A few examples of how to call client methods
`js
const RPCClient = require('micro-rpc-client');
const client = new RPCClient({
url: 'https://localhost:3000/rpc',
sendCredentials: 'same-origin', // send cookies on same origin requests
});
const main = async () => {
const methods = await client.listMethods();
console.log(method);
/*
[
{
"docs": "add two numbers"
"name": "add"
},
{
"docs": "list all available methods",
"name": "methods"
}
]
*/
const result = await client.call('add', [1, 2]);
console.log(result); // 3
};
main();
`
Create an instance of RPCClient
`js`
const client = new RPCClient({
url,
sendCredentials,
});
url - _string_ - full url to the RPC Endpoint Server
sendCredentials - _string_ - when to send things like cookies with a request, passes arguments to the credentials init argument in the fetch API https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters
Returns an instance of the RPC client
List all remote methods on a server
`js`
const methods = await client.listMethods()
Returns a promise that resolves with a list of the remote methods
`js`
const result = await client.call(name, args)
name - _string_ - name of the remote RPC endpoint
args - _array_ or _object_ - arguments to pass to the remote RPC endpoint
Returns a promise that resolves with the result and rejects with an error.
When calling a remote function with call there are different categories of responses:
This is the typical success case
``
statusCode = 200
result = {} // JSON
An error triggered from createError:
``
statusCode = 400
result = {
error: 'string',
code: 1000, // or some custom code
handled: true,
}
An error triggered from errorMiddleware:
```
statusCode = 500
result = {
error: 'string',
code: 1000, // or some custom code
handled: true,
}
If the errorMiddleware is not hooked up, or something unexpected happened the original error will be thrown.