Skip to content
文档
Server Side

Server Side API

通过调用loader.initServer()获取 server 实例,下面将展示其 API 详情。

Server

add()

server.add(name, implementation, options)

功能说明:

  • proto service rpc定义与具体的执行实现进行绑定。

参数说明:

OptionTypeDescription
nameString必填,包含包名的 service name
implementationObject必填,携带 service rpc 定义好的方法的对象或者类
optionsObject可选,{ exclude, inherit }

其中 options 详情如下:

OptionTypeDescription
excludeString[]可选,排除`implementation`中不需要参与`service rpc`绑定的方法
inheritClass可选,如果 `implementation` 通过继承的方式获得的`func`,父类也要参与绑定,把父类传入该参数即可

返回值:

  • void: 空。

remove()

server.remove(name)

功能说明:

  • 对已经绑定的service进行解绑。

参数说明:

OptionTypeDescription
nameString必填,包含包名的 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 前后逻辑的中间件。

参数说明:

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

返回值:

  • void: 空。

listen()

await server.listen(addr, credentials)

功能说明:

  • 监听地址与端口,启动 gRPC 服务。

参数说明:

OptionTypeDescription
addrString / { host, port }必填, ip/domain + port 格式,或,{ host, port } 格式
credentialsServerCredentials可选,证书链,使用 `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)

功能说明:

  • 服务端端发送一条流信息。

参数说明:

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

返回值:

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

writeAll()

call.writeAll([ request ])

功能说明:

  • 服务端批量发送多条流信息。

参数说明:

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

返回值:

  • void: 空。

end()

call.end()

功能说明:

  • 服务端结束流信息处理,并通过客户端。

参数说明:

  • void: 空。

返回值:

  • void: 空。

duplex stream call

async duplexStreamMethod(call) {}

write()

call.write(request)

功能说明:

  • 服务端端发送一条流信息。

参数说明:

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

返回值:

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

writeAll()

call.writeAll([ request ])

功能说明:

  • 服务端批量发送多条流信息。

参数说明:

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

返回值:

  • void: 空。

readAll()

for await (const data of call.readAll()) {}

功能说明:

  • 接收来自客户端的流信息。

参数说明:

  • void: 空。

返回值:

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

end()

call.end()

功能说明:

  • 服务端结束流信息处理,并通过客户端。

参数说明:

  • void: 空。

返回值:

  • void: 空。