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: 空。