Noncommital Premarital Mischief

    rpc-client-js
    TypeScript icon, indicating that this package has built-in type declarations

    1.0.2 • Public • Published

    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");
    });
     

    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.

    Keywords

    none

    Install

    npm i rpc-client-js

    DownloadsWeekly Downloads

    111

    Version

    1.0.2

    License

    Apache-2.0

    Unpacked Size

    280 kB

    Total Files

    108

    Last publish

    Collaborators

    • abnerzheng