0.0.5 • Published 4 years ago

@tick-core/grpc-client v0.0.5

Weekly downloads
-
License
ISC
Repository
-
Last release
4 years ago

tick-core-grpc-client: grpc client

⚠️️注意

下载

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)