0.0.5 • Published 4 years ago
@tick-core/grpc-client v0.0.5
tick-core-grpc-client: grpc client
⚠️️注意
- 多个端口号原因:tick-core-grpc-server会用多个端口启用多个子进程
下载
npm install @tick-core/grpc-client
interface
interface TestOne {
sayHello: (data: { // proto service 中的 rpc method
id: number
name: string
age: number
}) => Promise<any>
}
client.ts
import {
TestOne
} from '../interface/test-one'
import {
GrpcClientConfig,
CreateGrpcClient,
} from '@tick-core/grpc-client'
import path from 'path'
import {
Zconf,
} from '@tick-core/zconf'
// 使用方式1【本地proto】
const config: GrpcClientConfig = {
host: '127.0.0.1',
ports: [8888, 8899],
protoPath: path.join(__dirname, './proto')
}
OR
// 使用方式2【zookeeper proto】
const config: GrpcClientConfig = {
host: '127.0.0.1',
ports: [8888, 8899],
protoPath: new Zconf({
zookeeperConfs: [{
host: '127.0.0.1',
port: 2181,
}],
conf: {
proto1: '/app/proto1',
proto: '/app/proto'
},
retries: 3,
cache: false,
})
}
const createGrpcClient: CreateGrpcClient = new CreateGrpcClient(config)
// 因为只有这样才能每次使用时获取client,才能轮询不同的端口号
export const testOneClient = (): TestOne => createGrpcClient.getClient('testOne') // proto 的 package
使用方式
import {
testOneClient
} from '../client'
/**
* 因为连接grpc服务是异步的,故在获取client时需要等连接成功,
*/
setTimeout(async () => {
const result = await testOneClient().sayHello({
age: 1,
name: 'zhangsan',
id: 12
})
console.log(result)
}, 100)