@faustt/rpc
v1.0.1
Published
Easy to use RPC library for Node.JS and browsers using WebSockets.
Downloads
3
Readme
@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"),
} });