Skip to content

An easy-to-use RPC tool that makes remote function calls as seamless as local ones, eliminating the need for RESTful APIs.

License

Notifications You must be signed in to change notification settings

SherlockGn/simple-rpc

Repository files navigation


NPM version Size Unpacked Size License

Simple RPC

Introduction

The Simple RPC is a Node.js framework which simplifies the process of creating web servers and minimizes the communication efforts. With Simple RPC, you can invoke server-side functions from your client as if they were local, eliminating the need for RESTful APIs.

To get more information, please refer to the documentation.

Features and Highlights

  • With async/await, the RPC framework is very easy to use.
  • The serialization algorithm allows you to pass data of common types that JSON.stringify cannot handle, such as undefined, Date, RegExp, Infinity, Set, Map, and more.
  • The serialization algorithm allows you to pass data with circular properties.
  • The RPC framework allows you to upload or download files.
  • The RPC framework allows you to add authorization, end, or error handling middlewares.
  • The RPC framework allows you to add static pages and handle CORS.
  • The RPC framework is implemented in JavaScript and is quite lightweight, not relying on any other third-party libraries.

Installation (Server or Client)

npm install @neko-gong/simple-rpc

Quick Start

Server

For the server side, both ESM and CJS are supported.

Assume you have a folder named rpc where all the modules you want to expose to the client are located.

The file structure should be like this:

project/
  ├── rpc/
  │   ├── user.js
  │   └── file.js
  └── server.js

In the file server.js, you can use the following code to create a server:

import { createServer } from '@neko-gong/simple-rpc'

const server = createServer()
server.useRpc('./rpc')

await server.start()

In the file rpc/user.js, you can create several exported functions:

export const getById = id => {
    return { id, name: 'John' }
}

export const add = async user => {
    await new Promise(resolve => setTimeout(resolve, 5000))
    return user
}

Client

For the client side, you can use Node.js (ESM or CJS) or browser (ESM or UMD).

import client from '@neko-gong/simple-rpc/client'

client.settings.host = 'https://localhost:8080'

let user = await client.user.getById(1)
console.log(user)

user = await client.user.add({ id: 2, name: 'Jane' })
console.log(user)

For using UMD, access the global variable simpleRpcClient:

<script src="node_modules/@neko-gong/simple-rpc/dist/client-umd.js"></script>
const client = simpleRpcClient.default

const user = await client.user.getById(1)
console.log(user)

To get more information about how Simple RPC is used and implemented, please refer to the documentation.

About

An easy-to-use RPC tool that makes remote function calls as seamless as local ones, eliminating the need for RESTful APIs.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published