node-rpc-lite
TypeScript icon, indicating that this package has built-in type declarations

1.0.6 • Public • Published

Node-rpc

A Node base Rpc framework

About this Repo

It's a lite rpc framework base on Node.js.

with some features:

  • using hessian protocol impleaments encode and decode operation.
  • support middileware mechanism which is same as koa.
  • can recieve request base on event's behavior.
  • support custome define your own decoder and encoder.

Usage

install

npm i node-rpc-lite

direct connection mode

client

import { Client } from "node-rpc-lite";
import signale from "signale";
 
const port: number = 9000;
const ip: string = "127.0.0.1";
const duration: number = 100;
 
const client: Client = new Client({
    duration,
    ip,
    port,
});
 
client.connnect();
signale.debug("connect success !!");
 
const message = {
    data: {
        arr: [],
    },
    identifier: "querywork",
    msg: "success",
    status: 200,
};
 
client.on("data", (msg) => {
    signale.debug("client recieve data:");
    signale.debug(msg);
 
    client.close();
});
 
 
client.push(message);
 
 

Server

import { Context, IServerConfig, NextFNType, Router, Server, V1Decode, V1Encode, Writer } from "node-rpc-lite";
import signale from "signale";
 
const config: IServerConfig = {
    duration: 500,
    ip: "127.0.0.1",
    port: 9000,
};
 
const decode: V1Decode = new V1Decode();
const encode: V1Encode = new V1Encode();
const writer: Writer = new Writer();
 
const log = async (ctx: Context, next: NextFNType) => {
    signale.debug("request is comming");
 
    if (next) {
        await next();
    }
};
 
// 路由
const router: Router = new Router();
router.on("querywork", async (ctx: Context) => {
 
    await new Promise((resolve) => {
        setTimeout(() => {
            ctx.dataWillBeEncode = {
                send: "send data after waiting 1000 ms",
            };
            resolve();
        }, 1000);
    });
 
    signale.debug(`recive data ${JSON.stringify(ctx.receive)}`);
});
 
const server: Server = new Server(config);
 
server.use(decode.use);
server.use(router.route);
server.use(log);
server.use(encode.use);
server.use(writer.use);
 
server.on("start", (conf) => {
    signale.debug(`server start ${conf.host}${conf.port}`);
});
 
server.start();
 

run multiple server

please view example, also could use node-agent-cli.

Readme

Keywords

none

Package Sidebar

Install

npm i node-rpc-lite

Weekly Downloads

3

Version

1.0.6

License

MIT

Unpacked Size

113 kB

Total Files

99

Last publish

Collaborators

  • milkyway