# 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 ```javascript 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 ```javascript 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 ```javascript 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 ```javascript 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](CONTRIBUTING.md), [BUILDING.md](BUILDING.md) and [RELEASING.md](RELEASING.md) respectively. Commits in this repository follow the [CONVENTIONAL_COMMITS.md](CONVENTIONAL_COMMITS.md) specification.