1.0.1 • Published 3 years ago

@faustt/rpc v1.0.1

Weekly downloads
-
License
-
Repository
-
Last release
3 years ago

@faustt/rpc

Easy to use RPC library for Node.JS and browsers using WebSockets.

Example

Server code for Node.js:

import { createServer } from "@faustt/rpc";

async function main() {
  const server = await createServer();
  console.log(`Available on ${server.url}`);

  server.method("sayHello", () => {
    console.log("Hello world!");
  });

  server.method("sum", (a: number, b: number) => a + b);

  const numbers = server.channel("numbers");

  server.method("pushRandomNumbers", async (amount: number) => {
    for (let i = 0; i < amount; ++i) {
      await new Promise((resolve) => setTimeout(resolve, 500));
      numbers.push(Math.random());
    }
  });
}

main();

Client code for both Node.js and browsers:

import { createClient } from "@faustt/rpc";

async function main() {
  const client = await createClient(/* server.url */);

  // server prints "Hello world!"
  await client.call("sayHello");

  console.log(await client.call("sum", 4, 5)); // 9

  client.subscribe("numbers", (num: number) => {
    console.log(num);
  });

  // will eventually print 5 random numbers
  await client.call("pushRandomNumbers", 5);
}

main();

Features

Secure servers

You can setup a secure server by just enabling a flag. A self signed certificate will be generated for the server to use. Note that for browser use, the user has to trust the generated certificate. This can be done by instructing the user to visit server.trustUrl. This will display the browser warning. Once the user has trusted the certificate, they will be redirected to the previous page.

// Generate self signed certificate
const server = await createServer({ secure: true });

// Use existing certificate
const server = await createServer({ secure: {
  key: await fs.readFile(/*...*/, "utf8"),
  cert: await fs.readFile(/*...*/, "utf8"),
} });