Server Side API
通过调用loader.initServer()
获取 server
实例,下面将展示其 API 详情。
Server
add()
server.add(name, implementation, options)
功能说明:
- 将
proto service rpc
定义与具体的执行实现进行绑定。
参数说明:
Option | Type | Description |
---|---|---|
name | String | 必填,包含包名的 service name |
implementation | Object | 必填,携带 service rpc 定义好的方法的对象或者类 |
options | Object | 可选,{ exclude, inherit } |
其中 options
详情如下:
Option | Type | Description |
---|---|---|
exclude | String[] | 可选,排除`implementation`中不需要参与`service rpc`绑定的方法 |
inherit | Class | 可选,如果 `implementation` 通过继承的方式获得的`func`,父类也要参与绑定,把父类传入该参数即可 |
返回值:
void
: 空。
remove()
server.remove(name)
功能说明:
- 对已经绑定的
service
进行解绑。
参数说明:
Option | Type | Description |
---|---|---|
name | String | 必填,包含包名的 service name |
返回值:
void
: 空。
inject()
server.inject(customService)
功能说明:
- 给当前
server
注入一个自定义的service
。目前仅支持loader.initReflection()
的注入。
use()
server.use(fn)
server.use([fn, fn1])
server.use(fn, fn1, fn2)
功能说明:
- 添加一个处理 rpc 前后逻辑的中间件。
参数说明:
Option | Type | Description |
---|---|---|
single | MiddlewareFunction | 中间件函数,一般为 `async (ctx, next) => { await next() } |
array | MiddlewareFunction[] | 中间件函数数组 |
mutli | ...MiddlewareFunction | 多个中间件函数 |
返回值:
void
: 空。
listen()
await server.listen(addr, credentials)
功能说明:
- 监听地址与端口,启动 gRPC 服务。
参数说明:
Option | Type | Description |
---|---|---|
addr | String / { host, port } | 必填, ip/domain + port 格式,或,{ host, port } 格式 |
credentials | ServerCredentials | 可选,证书链,使用 `loader.makeServerCredentials()` 获取 |
返回值:
void
: 空。
shutdown()
await server.shutdown()
功能说明:
- gRPC 服务优雅退出。
参数说明:
void
: 空。
返回值:
void
: 空。
forceShutdown()
server.forceShutdown()
功能说明:
- gRPC 服务强制退出。
参数说明:
void
: 空。
返回值:
void
: 空。
method[callProxy]
unary call
async unaryMethod(call) {}
sendMetadata()
const metadata = call.metadata.clone()
metadata.add(keyString, value)
call.sendMetadata(metadata)
功能说明:
call.metadata.clone()
: 接收来自客户端的metadata
,并克隆;metadata.add(keyString, value)
:metadata
新增 kv 对;call.sendMetadata(metadata)
: 服务端发送metadata
给客户端;
client stream call
async clientStreamMethod(call) {}
readAll()
for await (const data of call.readAll()) {}
功能说明:
- 接收来自客户端的流信息。
参数说明:
void
: 空。
返回值:
asyncIterator
: 返回的一个asyncIterator
对象,需要我们使用for await
逐条获取stream message
结果;
end()
call.end()
功能说明:
- 服务端结束流信息处理,并通过客户端。
参数说明:
void
: 空。
返回值:
void
: 空。
server stream call
async serverStreamMethod(call) {}
write()
call.write(request)
功能说明:
- 服务端端发送一条流信息。
参数说明:
Option | Type | Description |
---|---|---|
request | Object | 可选,一个包含请求参数的对象。请求对象的结构取决于定义的 gRPC 服务的`.proto`文件中的消息类型 |
返回值:
Boolean
: 布尔值,一般为true
,用于表示是否发送成功;
writeAll()
call.writeAll([ request ])
功能说明:
- 服务端批量发送多条流信息。
参数说明:
Option | Type | Description |
---|---|---|
request | Object | 可选,一个包含请求参数的对象。请求对象的结构取决于定义的 gRPC 服务的`.proto`文件中的消息类型 |
返回值:
void
: 空。
end()
call.end()
功能说明:
- 服务端结束流信息处理,并通过客户端。
参数说明:
void
: 空。
返回值:
void
: 空。
duplex stream call
async duplexStreamMethod(call) {}
write()
call.write(request)
功能说明:
- 服务端端发送一条流信息。
参数说明:
Option | Type | Description |
---|---|---|
request | Object | 可选,一个包含请求参数的对象。请求对象的结构取决于定义的 gRPC 服务的`.proto`文件中的消息类型 |
返回值:
Boolean
: 布尔值,一般为true
,用于表示是否发送成功;
writeAll()
call.writeAll([ request ])
功能说明:
- 服务端批量发送多条流信息。
参数说明:
Option | Type | Description |
---|---|---|
request | Object | 可选,一个包含请求参数的对象。请求对象的结构取决于定义的 gRPC 服务的`.proto`文件中的消息类型 |
返回值:
void
: 空。
readAll()
for await (const data of call.readAll()) {}
功能说明:
- 接收来自客户端的流信息。
参数说明:
void
: 空。
返回值:
asyncIterator
: 返回的一个asyncIterator
对象,需要我们使用for await
逐条获取stream message
结果;
end()
call.end()
功能说明:
- 服务端结束流信息处理,并通过客户端。
参数说明:
void
: 空。
返回值:
void
: 空。