Skip to content
文档
Client Side

Client Side API

通过 loader.initClients() 获取 clients实例,下面将展示其 API 详情。

Clients

get()

const client = clients.get(name, options)

功能说明:

  • 获取 name 对应的 proto 定义的 service 客户端实例,走 proxy 而且会缓存起来。

参数说明:

OptionTypeDescription
nameString必填,包含包名的 service name
optionsObject可选,{ url, channelOptions, credentials, timeout }

其中 options 详情如下:

OptionTypeDescription
urlString / { host, port }可选, ip/domain + port 格式,或,{ host, port } 格式
channelOptionsChannelOptions可选,proto channel options,默认使用内置 channelOptions
credentialsChannelCredentials可选,证书链,使用 `loader.makeClientCredentials()` 获取
timeoutNumber可选,单位是毫秒,rpc 调用控制超时时间

返回值:

  • 返回该 service proto 定义好的 already proxy method 的对象。

getReal()

const client = clients.getReal(name, options)

功能说明:

  • 获取 name 对应的 proto 定义的 service 客户端实例,不走 proxy 而且不会缓存。

参数说明:

OptionTypeDescription
nameString必填,包含包名的 service name
optionsObject可选,{ url, channelOptions, credentials, timeout }
OptionTypeDescription
urlString / { host, port }可选, ip/domain + port 格式,或,{ host, port } 格式
channelOptionsChannelOptions可选,proto channel options,默认使用内置 channelOptions
credentialsChannelCredentials可选,证书链,使用 `loader.makeClientCredentials()` 获取
timeoutNumber可选,单位是毫秒,rpc 调用控制超时时间

返回值:

  • 返回该 service proto 定义好的 callback method 的对象。

use()

clients.use(fn)
clients.use([fn, fn1])
clients.use(fn, fn1, fn2)

功能说明:

  • 添加一个处理 rpc 前后逻辑的中间件。

参数说明:

OptionTypeDescription
singleMiddlewareFunction中间件函数,一般为 `async (ctx, next) => { await next() }
arrayMiddlewareFunction[]中间件函数数组
mutli...MiddlewareFunction多个中间件函数

返回值:

  • void: 空。

clear()

clients.clear(fn)

功能说明:

  • 清空 client 所有缓存。

返回值:

  • void: 空。

init()

clients.init(options)

功能说明:

  • 重新进行初始化,需要先执行clear()才会生效。

参数说明:

OptionTypeDescription
servicesObject必填,service 和地址
channelOptionsChannelOptions可选,proto channel options,默认使用内置 channelOptions
credentialsChannelCredentials可选,证书链,使用 `loader.makeCredentials()` 获取
OptionTypeDescription
services.keyStringservice name, 包含完整的包名, 如 'test.helloworld.Greeter'
services.valueStringip/domain + port 格式,如 '192.168.1.33:5001'
services.valueObject{ host, port } 格式,`host`: 字符串,支持 ip 和域名; `port`: 数字,最小值为0,最大值为65535

返回值:

  • void: 空。

proxy[method]

unary call

const { status, peer, metadata, response } = await client.rpcUnaryMethod(request, metadata, options)

功能说明:

  • 发一次rpcUnaryMethod调用,点对点,并等待直至结果返回。

参数说明:

OptionTypeDescription
requestObject可选,一个包含请求参数的对象。请求对象的结构取决于定义的 gRPC 服务的`.proto`文件中的消息类型
metadataMetadata可选,用于传递与请求相关的元数据。元数据是以键值对的形式表示的信息,可以包含用于身份验证、授权、跟踪或其他目的的数据
optionsObject可选,用于设置特定的调用选项。它是一个包含一组键值对的对象,可用于配置调用的行为。一些可用的选项包括超时时间、重试策略等。如果不传该参数,默认会设置10秒超时,可以通过传入 `timeout` 的方式修改超时时间

返回值:

OptionTypeDescription
statusStatusObject服务端处理执行后的状态
peerString客户端发起的地址信息
metadataMetadata服务端返回的 metadata 信息
responseObject服务端处理完成后响应的结果

client stream

const clientStreamCall = await client.rpcClientStreamMethod(metadata, options)

功能说明:

  • 处理一次rpcClientStreamMethod调用,提供客户端发送流信息的能力和获取服务端处理完流的结果的能力。

参数说明:

OptionTypeDescription
metadataMetadata可选,用于传递与请求相关的元数据。元数据是以键值对的形式表示的信息,可以包含用于身份验证、授权、跟踪或其他目的的数据
optionsObject可选,用于设置特定的调用选项。它是一个包含一组键值对的对象,可用于配置调用的行为。一些可用的选项包括超时时间、重试策略等。如果不传该参数,默认会设置10秒超时,可以通过传入 `timeout` 的方式修改超时时间

返回值:

  • client stream call 实例,提供一系列方法处理客户端流。

write()

clientStreamCall.write(request)

功能说明:

  • 客户端发送一条流信息。

参数说明:

OptionTypeDescription
requestObject可选,一个包含请求参数的对象。请求对象的结构取决于定义的 gRPC 服务的`.proto`文件中的消息类型

返回值:

  • Boolean: 布尔值,一般为true,用于表示是否发送成功;

writeAll()

clientStreamCall.writeAll([request])

功能说明:

  • 客户端批量发送多条流信息。

参数说明:

OptionTypeDescription
requestObject可选,一个包含请求参数的对象。请求对象的结构取决于定义的 gRPC 服务的`.proto`文件中的消息类型

返回值:

  • void: 空。

writeEnd()

const { status, peer, metadata, response } = await clientStreamCall.writeEnd()

功能说明:

  • 获取服务端处理完流信息的结果。

返回值:

OptionTypeDescription
statusStatusObject服务端处理执行后的状态
peerString客户端发起的地址信息
metadataMetadata服务端返回的 metadata 信息
responseObject服务端处理完成后响应的结果

server stream

const serverStreamCall = await client.rpcServerStreamMethod(request, metadata, options)

功能说明:

  • 处理一次rpcServerStreamMethod调用,提供客户端发起一次调用的能力和获取服务端发送的流信息的能力。

参数说明:

OptionTypeDescription
requestObject可选,一个包含请求参数的对象。请求对象的结构取决于定义的 gRPC 服务的`.proto`文件中的消息类型
metadataMetadata可选,用于传递与请求相关的元数据。元数据是以键值对的形式表示的信息,可以包含用于身份验证、授权、跟踪或其他目的的数据
optionsObject可选,用于设置特定的调用选项。它是一个包含一组键值对的对象,可用于配置调用的行为。一些可用的选项包括超时时间、重试策略等。如果不传该参数,默认会设置10秒超时,可以通过传入 `timeout` 的方式修改超时时间

返回值:

  • server stream call 实例,提供一系列方法处理客户端流。

readAll()

const asyncIterator = await serverStreamCall.readAll()

功能说明:

  • 接收服务端返回流信息。

返回值:

  • asyncIterator:服务端返回的一个asyncIterator对象,需要我们使用for await获取服务端返回的逐条stream message结果;

readEnd()

const { status, peer, metadata } = await serverStreamCall.readEnd()

功能说明:

  • 接收服务端处理 statuspeermetadata 元信息。

返回值:

OptionTypeDescription
statusStatusObject服务端处理执行后的状态
peerString客户端发起的地址信息
metadataMetadata服务端返回的 metadata 信息

duplex stream

const clientDuplexStreamCall = client.rpcDuplexStreamMethod(metadata, options)

功能说明:

  • 处理一次rpcDuplexStreamMethod调用,提供客户端发送流信息的能力和获取服务端发送的流信息的能力。

参数说明:

OptionTypeDescription
metadataMetadata可选,用于传递与请求相关的元数据。元数据是以键值对的形式表示的信息,可以包含用于身份验证、授权、跟踪或其他目的的数据
optionsObject可选,用于设置特定的调用选项。它是一个包含一组键值对的对象,可用于配置调用的行为。一些可用的选项包括超时时间、重试策略等。如果不传该参数,默认会设置10秒超时,可以通过传入 `timeout` 的方式修改超时时间

返回值:

  • duplex stream call 实例,提供一系列方法处理客户端流。

write()

clientDuplexStreamCall.write(request)

功能说明:

  • 客户端发送一条流信息。

参数说明:

OptionTypeDescription
requestObject可选,一个包含请求参数的对象。请求对象的结构取决于定义的 gRPC 服务的`.proto`文件中的消息类型

返回值:

  • Boolean: 布尔值,一般为true,用于表示是否发送成功;

writeAll()

clientDuplexStreamCall.writeAll([request])

功能说明:

  • 客户端批量发送多条流信息。

参数说明:

OptionTypeDescription
requestObject可选,一个包含请求参数的对象。请求对象的结构取决于定义的 gRPC 服务的`.proto`文件中的消息类型

返回值:

  • void: 空。

writeEnd()

clientDuplexStreamCall.writeEnd()

功能说明:

  • 客户端发送流信息终止的信息。

返回值:

  • void: 空。

readAll()

const asyncIterator = await clientDuplexStreamCall.readAll()

功能说明:

  • 接收服务端返回流信息。

返回值:

  • asyncIterator:服务端返回的一个asyncIterator对象,需要我们使用for await获取服务端返回的逐条stream message结果;

readEnd()

const { status, peer, metadata } = clientDuplexStreamCall.readEnd()

功能说明:

  • 接收服务端返回的状态和metadata元信息。

返回值:

OptionTypeDescription
statusStatusObject服务端处理执行后的状态
peerString客户端发起的地址信息
metadataMetadata服务端返回的 metadata 信息

proxy.call[method]

const callInstance = client.call.rpcMethod(request, metadata, options, callback)

功能说明:

  • 处理一次call.rpcMethod调用,使用回调函数和事件监听的机制处理服务端的信息。

参数说明:

OptionTypeDescription
requestObject可选,一个包含请求参数的对象。请求对象的结构取决于定义的 gRPC 服务的`.proto`文件中的消息类型
metadataMetadata可选,用于传递与请求相关的元数据。元数据是以键值对的形式表示的信息,可以包含用于身份验证、授权、跟踪或其他目的的数据
optionsObject可选,用于设置特定的调用选项。它是一个包含一组键值对的对象,可用于配置调用的行为。一些可用的选项包括超时时间、重试策略等。如果不传该参数,默认会设置10秒超时,可以通过传入 `timeout` 的方式修改超时时间
callbackFunction必填,回调函数,用来接收并处理服务端返回错误信息和结果

返回值:

  • call 实例,提供一系列方法处理客户端。

on()

callInstance.on('eventName', callback)

功能说明:

  • 监听服务端事件,并处理监听数据。

参数说明:

OptionTypeDescription
eventNameString必填,事件名,有:`data`, `end`, `status`, `metadata`和`error`
callbackFunction必填,回调函数,用来接收并处理服务端返回错误信息和结果

返回值:

  • void: 空。

write()

callInstance.write(request)

功能说明:

  • 客户端发送一条流信息。

参数说明:

OptionTypeDescription
requestObject可选,一个包含请求参数的对象。请求对象的结构取决于定义的 gRPC 服务的`.proto`文件中的消息类型

返回值:

  • Boolean: 布尔值,一般为true,用于表示是否发送成功;

end()

callInstance.end()

功能说明:

  • 客户端发送流信息已结束的信号给服务端。

参数说明:

  • void: 空。

返回值:

  • void: 空。