Mini-RPC
simple but effective RPC framework. Both server and client.
Usage
Get start
Install
npm i @mini-rpc/server
pnpm add @mini-rpc/server
yarn add @mini-rpc/server
Config
{
"compilerOptions": {
"target": "ES2018",
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
}
}
npm i reflect-metadata
pnpm add reflect-metadata
yarn add reflect-metadata
- import
reflect-metadata
on entry
(e.g: index.ts
)
Server
import { Service, Callable } from "@mini-rpc/server";
@Service()
class MyService {
@Callable()
add(...nums: number[]) {
return nums.reduce((acc, cur) => acc + cur);
}
}
const server = new RPCServer();
server.registerServices([MyService]);
server.listen(3000);
Client
import { RPCClient } from "@mini-rpc/client";
const client = new RPCClient("ws://localhost:3000");
client.connect();
client
.call("MyService.add", [1,2,3])
.then((result) => {
console.log(result);
})
.catch((err) => {
console.error(err);
});
Tips
- the
@Callable
method can be asynchronous.
class x {
@Callable()
async add(a:number,b:number) {
}
@Callable()
promiseAdd(a:number,b:number):Promise<number> {
return Promise<number>()
}
}