Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/adriano-di-giovanni/jr2
An extremely lightweight JSON-RPC 2.0 compliant client and server for Javascript.
https://github.com/adriano-di-giovanni/jr2
json-rpc-client json-rpc-server json-rpc2
Last synced: 1 day ago
JSON representation
An extremely lightweight JSON-RPC 2.0 compliant client and server for Javascript.
- Host: GitHub
- URL: https://github.com/adriano-di-giovanni/jr2
- Owner: adriano-di-giovanni
- Created: 2018-01-03T12:44:01.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2018-01-03T17:58:34.000Z (almost 7 years ago)
- Last Synced: 2024-11-08T06:43:38.467Z (6 days ago)
- Topics: json-rpc-client, json-rpc-server, json-rpc2
- Language: JavaScript
- Size: 15.6 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# jr2
jr2 is an extremely lightweight [JSON-RPC 2.0](http://www.jsonrpc.org/specification) compliant client and server for Javascript.
It is transport-independent, runs in client and server environments, has no dependencies.
It is tiny (< 2kB).
## Installation
```bash
npm install --save jr2
```You can use jr2 with module bundlers.
The `jr2` npm package also includes precompiled production and development [UMD](https://github.com/umdjs/umd) builds in the `dist` folder. They can be used without a bundler.
The UMD builds make jr2 available as `window.jr2` global variable.
jr2 works in [any modern browser](http://caniuse.com/#feat=es5) and Node.js.
## Usage
### Client
```Javascript
import { createClient } from 'jr2'const client = createClient()
const request = client.request('sum', [1, 2, 4], 1)
console.log(request) // { jsonrpc: '2.0', method: 'sum', params: [1, 2, 4], id: 1 }
```### Server
```javascript
import { createServer } from 'jr2'const delegate = {
sum(params, { responseWithResult }, callback) {
const result = params.reduce((a, b) => a + b, 0)
callback(null, responseWithResult(result))
},
}const server = createServer(delegate)
const request = {
jsonrpc: '2.0',
method: 'sum',
params: [1, 2, 4],
id: 1,
}server.handle(request, (err, response) => {
console.log(response) // { jsonrpc: '2.0', result: 7, id: 1 }
})
```#### Delegate
The delegate implements server methods as functions. Functions are invoked with
`(params, context, callback)` and `this` is bound to the delegate.The `params` argument can be an array of positional parameters or an object for named parameters.
The `context` argument is an object implementing two helper functions: `responseWithResult(result)` and `responseWithError(code, message, data)`. These helper functions help you create a compliant response and automatically match the id of the response with the id of the related request.
The `callback` argument is a function. It is expected to be invoked with `(err, response)`.
## License
MIT