@neko-gong/simple-rpc

0.0.2 • Public • Published

NPM version License NPM downloads 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 = 'http://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.

Package Sidebar

Install

npm i @neko-gong/simple-rpc

Weekly Downloads

2

Version

0.0.2

License

MIT

Unpacked Size

110 kB

Total Files

8

Last publish

Collaborators

  • neko-gong