Client Side API
通过 loader.initClients()
获取 clients
实例,下面将展示其 API 详情。
Clients
get()
const client = clients.get(name, options)
功能说明:
- 获取
name
对应的 proto 定义的 service 客户端实例,走proxy
而且会缓存起来。
参数说明:
Option | Type | Description |
---|---|---|
name | String | 必填,包含包名的 service name |
options | Object | 可选,{ url, channelOptions, credentials, timeout } |
其中 options
详情如下:
Option | Type | Description |
---|---|---|
url | String / { host, port } | 可选, ip/domain + port 格式,或,{ host, port } 格式 |
channelOptions | ChannelOptions | 可选,proto channel options,默认使用内置 channelOptions |
credentials | ChannelCredentials | 可选,证书链,使用 `loader.makeClientCredentials()` 获取 |
timeout | Number | 可选,单位是毫秒,rpc 调用控制超时时间 |
返回值:
- 返回该
service proto
定义好的already proxy method
的对象。
getReal()
const client = clients.getReal(name, options)
功能说明:
- 获取
name
对应的 proto 定义的 service 客户端实例,不走proxy
而且不会缓存。
参数说明:
Option | Type | Description |
---|---|---|
name | String | 必填,包含包名的 service name |
options | Object | 可选,{ url, channelOptions, credentials, timeout } |
Option | Type | Description |
---|---|---|
url | String / { host, port } | 可选, ip/domain + port 格式,或,{ host, port } 格式 |
channelOptions | ChannelOptions | 可选,proto channel options,默认使用内置 channelOptions |
credentials | ChannelCredentials | 可选,证书链,使用 `loader.makeClientCredentials()` 获取 |
timeout | Number | 可选,单位是毫秒,rpc 调用控制超时时间 |
返回值:
- 返回该
service proto
定义好的callback method
的对象。
use()
clients.use(fn)
clients.use([fn, fn1])
clients.use(fn, fn1, fn2)
功能说明:
- 添加一个处理 rpc 前后逻辑的中间件。
参数说明:
Option | Type | Description |
---|---|---|
single | MiddlewareFunction | 中间件函数,一般为 `async (ctx, next) => { await next() } |
array | MiddlewareFunction[] | 中间件函数数组 |
mutli | ...MiddlewareFunction | 多个中间件函数 |
返回值:
void
: 空。
clear()
clients.clear(fn)
功能说明:
- 清空
client
所有缓存。
返回值:
void
: 空。
init()
clients.init(options)
功能说明:
- 重新进行初始化,需要先执行
clear()
才会生效。
参数说明:
Option | Type | Description |
---|---|---|
services | Object | 必填,service 和地址 |
channelOptions | ChannelOptions | 可选,proto channel options,默认使用内置 channelOptions |
credentials | ChannelCredentials | 可选,证书链,使用 `loader.makeCredentials()` 获取 |
Option | Type | Description |
---|---|---|
services.key | String | service name, 包含完整的包名, 如 'test.helloworld.Greeter' |
services.value | String | ip/domain + port 格式,如 '192.168.1.33:5001' |
services.value | Object | { host, port } 格式,`host`: 字符串,支持 ip 和域名; `port`: 数字,最小值为0,最大值为65535 |
返回值:
void
: 空。
proxy[method]
unary call
const { status, peer, metadata, response } = await client.rpcUnaryMethod(request, metadata, options)
功能说明:
- 发一次
rpcUnaryMethod
调用,点对点,并等待直至结果返回。
参数说明:
Option | Type | Description |
---|---|---|
request | Object | 可选,一个包含请求参数的对象。请求对象的结构取决于定义的 gRPC 服务的`.proto`文件中的消息类型 |
metadata | Metadata | 可选,用于传递与请求相关的元数据。元数据是以键值对的形式表示的信息,可以包含用于身份验证、授权、跟踪或其他目的的数据 |
options | Object | 可选,用于设置特定的调用选项。它是一个包含一组键值对的对象,可用于配置调用的行为。一些可用的选项包括超时时间、重试策略等。如果不传该参数,默认会设置10秒超时,可以通过传入 `timeout` 的方式修改超时时间 |
返回值:
Option | Type | Description |
---|---|---|
status | StatusObject | 服务端处理执行后的状态 |
peer | String | 客户端发起的地址信息 |
metadata | Metadata | 服务端返回的 metadata 信息 |
response | Object | 服务端处理完成后响应的结果 |
client stream
const clientStreamCall = await client.rpcClientStreamMethod(metadata, options)
功能说明:
- 处理一次
rpcClientStreamMethod
调用,提供客户端发送流信息的能力和获取服务端处理完流的结果的能力。
参数说明:
Option | Type | Description |
---|---|---|
metadata | Metadata | 可选,用于传递与请求相关的元数据。元数据是以键值对的形式表示的信息,可以包含用于身份验证、授权、跟踪或其他目的的数据 |
options | Object | 可选,用于设置特定的调用选项。它是一个包含一组键值对的对象,可用于配置调用的行为。一些可用的选项包括超时时间、重试策略等。如果不传该参数,默认会设置10秒超时,可以通过传入 `timeout` 的方式修改超时时间 |
返回值:
client stream call 实例
,提供一系列方法处理客户端流。
write()
clientStreamCall.write(request)
功能说明:
- 客户端发送一条流信息。
参数说明:
Option | Type | Description |
---|---|---|
request | Object | 可选,一个包含请求参数的对象。请求对象的结构取决于定义的 gRPC 服务的`.proto`文件中的消息类型 |
返回值:
Boolean
: 布尔值,一般为true
,用于表示是否发送成功;
writeAll()
clientStreamCall.writeAll([request])
功能说明:
- 客户端批量发送多条流信息。
参数说明:
Option | Type | Description |
---|---|---|
request | Object | 可选,一个包含请求参数的对象。请求对象的结构取决于定义的 gRPC 服务的`.proto`文件中的消息类型 |
返回值:
void
: 空。
writeEnd()
const { status, peer, metadata, response } = await clientStreamCall.writeEnd()
功能说明:
- 获取服务端处理完流信息的结果。
返回值:
Option | Type | Description |
---|---|---|
status | StatusObject | 服务端处理执行后的状态 |
peer | String | 客户端发起的地址信息 |
metadata | Metadata | 服务端返回的 metadata 信息 |
response | Object | 服务端处理完成后响应的结果 |
server stream
const serverStreamCall = await client.rpcServerStreamMethod(request, metadata, options)
功能说明:
- 处理一次
rpcServerStreamMethod
调用,提供客户端发起一次调用的能力和获取服务端发送的流信息的能力。
参数说明:
Option | Type | Description |
---|---|---|
request | Object | 可选,一个包含请求参数的对象。请求对象的结构取决于定义的 gRPC 服务的`.proto`文件中的消息类型 |
metadata | Metadata | 可选,用于传递与请求相关的元数据。元数据是以键值对的形式表示的信息,可以包含用于身份验证、授权、跟踪或其他目的的数据 |
options | Object | 可选,用于设置特定的调用选项。它是一个包含一组键值对的对象,可用于配置调用的行为。一些可用的选项包括超时时间、重试策略等。如果不传该参数,默认会设置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()
功能说明:
- 接收服务端处理
status
、peer
和metadata
元信息。
返回值:
Option | Type | Description |
---|---|---|
status | StatusObject | 服务端处理执行后的状态 |
peer | String | 客户端发起的地址信息 |
metadata | Metadata | 服务端返回的 metadata 信息 |
duplex stream
const clientDuplexStreamCall = client.rpcDuplexStreamMethod(metadata, options)
功能说明:
- 处理一次
rpcDuplexStreamMethod
调用,提供客户端发送流信息的能力和获取服务端发送的流信息的能力。
参数说明:
Option | Type | Description |
---|---|---|
metadata | Metadata | 可选,用于传递与请求相关的元数据。元数据是以键值对的形式表示的信息,可以包含用于身份验证、授权、跟踪或其他目的的数据 |
options | Object | 可选,用于设置特定的调用选项。它是一个包含一组键值对的对象,可用于配置调用的行为。一些可用的选项包括超时时间、重试策略等。如果不传该参数,默认会设置10秒超时,可以通过传入 `timeout` 的方式修改超时时间 |
返回值:
duplex stream call 实例
,提供一系列方法处理客户端流。
write()
clientDuplexStreamCall.write(request)
功能说明:
- 客户端发送一条流信息。
参数说明:
Option | Type | Description |
---|---|---|
request | Object | 可选,一个包含请求参数的对象。请求对象的结构取决于定义的 gRPC 服务的`.proto`文件中的消息类型 |
返回值:
Boolean
: 布尔值,一般为true
,用于表示是否发送成功;
writeAll()
clientDuplexStreamCall.writeAll([request])
功能说明:
- 客户端批量发送多条流信息。
参数说明:
Option | Type | Description |
---|---|---|
request | Object | 可选,一个包含请求参数的对象。请求对象的结构取决于定义的 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
元信息。
返回值:
Option | Type | Description |
---|---|---|
status | StatusObject | 服务端处理执行后的状态 |
peer | String | 客户端发起的地址信息 |
metadata | Metadata | 服务端返回的 metadata 信息 |
proxy.call[method]
const callInstance = client.call.rpcMethod(request, metadata, options, callback)
功能说明:
- 处理一次
call.rpcMethod
调用,使用回调函数和事件监听的机制处理服务端的信息。
参数说明:
Option | Type | Description |
---|---|---|
request | Object | 可选,一个包含请求参数的对象。请求对象的结构取决于定义的 gRPC 服务的`.proto`文件中的消息类型 |
metadata | Metadata | 可选,用于传递与请求相关的元数据。元数据是以键值对的形式表示的信息,可以包含用于身份验证、授权、跟踪或其他目的的数据 |
options | Object | 可选,用于设置特定的调用选项。它是一个包含一组键值对的对象,可用于配置调用的行为。一些可用的选项包括超时时间、重试策略等。如果不传该参数,默认会设置10秒超时,可以通过传入 `timeout` 的方式修改超时时间 |
callback | Function | 必填,回调函数,用来接收并处理服务端返回错误信息和结果 |
返回值:
call 实例
,提供一系列方法处理客户端。
on()
callInstance.on('eventName', callback)
功能说明:
- 监听服务端事件,并处理监听数据。
参数说明:
Option | Type | Description |
---|---|---|
eventName | String | 必填,事件名,有:`data`, `end`, `status`, `metadata`和`error` |
callback | Function | 必填,回调函数,用来接收并处理服务端返回错误信息和结果 |
返回值:
void
: 空。
write()
callInstance.write(request)
功能说明:
- 客户端发送一条流信息。
参数说明:
Option | Type | Description |
---|---|---|
request | Object | 可选,一个包含请求参数的对象。请求对象的结构取决于定义的 gRPC 服务的`.proto`文件中的消息类型 |
返回值:
Boolean
: 布尔值,一般为true
,用于表示是否发送成功;
end()
callInstance.end()
功能说明:
- 客户端发送流信息已结束的信号给服务端。
参数说明:
void
: 空。
返回值:
void
: 空。