如何为 gRPC 服务器实例(在 Node 中)分配随机端口号?

aza*_*tar 0 http node.js microservices server grpc

在 Node.js 中启动 http 服务器时,开发人员可以通过0如下传递来侦听随机可用端口:

const http = require('http')
const service = require('../my/service);
const server = http.createServer(service)
server.listen(process.env.PORT || 0) // <-- Random port by default!
Run Code Online (Sandbox Code Playgroud)

我想知道如何使用 gRPC 做同样的事情?就像是...

const grpc = require('grpc')
const services = require('./service_grpc_pb')
const server = new grpc.Server()
server.addService(services.MyService, { ... })
server.bind('0.0.0.0:0', grpc.ServerCredentials.createInsecure())
server.start()
Run Code Online (Sandbox Code Playgroud)

那样有用吗?我还没有弄清楚。我的目标是获取一个随机端口,然后查询服务器以获取分配的端口,以便向中央微服务注册表注册服务。

提前感谢您的帮助。

mur*_*d99 6

是的,您可以使用端口号0为 gRPC 服务器分配随机端口。该server.bind方法返回实际分配的端口号。如果您想改用该bindAsync方法,分配的端口号将传递给回调。