kitejs

the rpc framework Kite for Node.js

Usage no npm install needed!

<script type="module">
  import kitejs from 'https://cdn.skypack.dev/kitejs';
</script>

README

kitejs

说明

kitejs 提供统一访问服务的 client,支持 Http、RPC(thrift) 协议,提供多种编解码方式(正在支持)。 kitejs 集成寻址、支持负载均衡策略

使用

首先进行安装

npm install kitejs --save

使用方法

// for HTTP
const kite = require('kitejs');

var client = new kite.Client(
    {
        host: '127.0.0.1',
        port: 8080,
        protocol: 'HTTP',
        log: {
            logFile: __dirname + '/client.log',
            logId: Date.now()
        }
    }
);

// use request component
client.request({ path: '/' }, function (err, data) {
    if (err) throw err;
    console.log(data);   
});

// for THRIFT
const kite = require('kitejs');

var client = new kite.Client(
    {
        host: '127.0.0.1',
        port: 8080,
        protocol: 'THRIFT',
        log: {
            logFile: __dirname + '/client.log',
            logId: Date.now()
        }
    }
);

client
    .loadService(__dirname + '/thrift/gen-nodejs/Calculator.js')
    .request(function (err, cal, conn) {
        if (err) throw err;
        cal.ping(function (err, response) {
            console.log('ping()');
        });

        cal.add(1, 1, function (err, response) {
            console.log(response);
        });
    });

// for CONSUL
const kite = require('kitejs');

var client = new kite.Client({
    service: 'ies.fe.mis',
    searchHostType: 'CONSUL',
    log: {
        logFile: __dirname + '/client.log',
        logId: Date.now()
    }
});

client.request({path: '/'}, function (err, data) {
    console.log(data);
});

接口

Client(options) 客户端类

可以方便的创建一个 Client 用于请求。。。

Options

  • protocol 访问协议,HTTP \ THRIFT,默认HTTP

  • searchHostType 寻址方式 LOCAL 或者 CONSUL,默认LOCAL

  • service consul 时提供 PSM 信息

  • host 服务端域名信息

  • port 服务端端口信息

  • timeout 访问超时时间 1s 100ms or 1 默认为

  • address 更人性化的地址设置,比如 127.0.0.1:10220

  • consul 提供 consul 服务地址信息

  • retry 重试次数,当网络不稳定时,需要重试 2

  • transport 选择的thrift协议。FRAMED | BUFFERED

    {
        consul: {
            host: '127.0.0.1',
            port: 2280
        }
    }
    

Client.request 发起请求,获取服务端数据

.request(options?, cb);

参数

  • options 可选,主要用于 HTTP 填写 PATH、HEADERS 等信息

    • request 的参数
  • cb

    function (err, data, conn?) {}
    
    • err 如果发生错误,err 为 Error 对象实例,如果未发生错误为 null
    • data
      • protocol=THRIFT 时,返回 Service 对象
      • protocol=HTTP 时,直接返回请求 response 的内容
    • conn 可选参数,如果 THRIFT 时,返回请求 connection ,可以方便 Service 获取到数据后关闭连接。

Client.loadService 加载 Thrift Service

参数

client.loadService('xxService.js')
// return client Object instance.
  • Thrift Service 的 path,框架会 load xxService.js 并注册入 Thrift 请求框架

返回

  • Client 对象实例