@open-rpc/client-js
    Preparing search index...

    @open-rpc/client-js

    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 }
    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();
    });
    # Install bun
    curl -fsSL https://bun.sh/install | bash

    # Build the repo
    bun install
    bun run build

    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.