Skip to content

bradjones1/client-js

 
 

Repository files navigation

OpenRPC Client JS

CircleCI branch Dependabot status Chat on Discord npm GitHub release GitHub commits since latest release

A browser-compatible JSON-RPC client with multiple transports:

  • EventEmitter
  • HTTP/HTTPS
  • WebSocket
  • PostMessageWindow
  • PostMessageIframe
import { RequestManager, HTTPTransport, Client } from "@open-rpc/client-js"; const transport = new HTTPTransport("http://localhost:8545"); const client = new Client(new RequestManager([transport])); const result = await client.request({method: "addition", params: [2, 2]}); // => { jsonrpc: '2.0', id: 1, result: 4 }

Examples

EventEmitter
import { EventEmitter } from "events"; import { RequestManager, EventEmitterTransport, Client } from "@open-rpc/client-js"; const chan1 = "chan1"; const chan2 = "chan2"; const emitter = new EventEmitter(); const transport = new EventEmitterTransport(emitter, chan1, chan2); const requestManager = new RequestManager([transport]); const client = new Client(requestManager); // event emitter server code emitter.on(chan1, (jsonrpcRequest) => { const res = { jsonrpc: "2.0", result: "potato", id: jsonrpcRequest.id, }; emitter.emit(chan2, JSON.stringify(res)); }); const main = async () => { const result = await client.request({method: "addition", params: [2, 2]}); console.log(result); }; main().then(() => { console.log("DONE"); });
HTTP
import { RequestManager, Client, HTTPTransport } from "@open-rpc/client-js"; const transport = new HTTPTransport("http://localhost:3333"); const requestManager = new RequestManager([transport]); const client = new Client(requestManager); const main = async () => { const result = await client.request({method: "addition", params: [2, 2]}); console.log(result); }; main().then(() => { console.log("DONE"); });
WebSocket
import { RequestManager, Client, WebSocketTransport } from "@open-rpc/client-js"; const transport = new WebSocketTransport("ws://localhost:3333"); const requestManager = new RequestManager([transport]); const client = new Client(requestManager); const main = async () => { const result = await client.request({method: "addition", params: [2, 2]}); console.log(result); }; main().then(() => { console.log("DONE"); client.close(); });

Contributing

How to contribute, build and release are outlined in CONTRIBUTING.md, BUILDING.md and RELEASING.md respectively. Commits in this repository follow the CONVENTIONAL_COMMITS.md specification.

About

A browser-compatible JSON-RPC client with multiple transports.

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • TypeScript 98.0%
  • HTML 1.1%
  • JavaScript 0.9%