NodeJS 如何在一个端口中运行Express服务器和RPC服务器

s4n0splo  于 2022-12-03  发布在  Node.js
关注(0)|答案(1)|浏览(221)

我有一个从Express开始的应用程序,如下所示:

const express = require('express');
const app = express();
let port = process.env.PORT||8080;

app.listen(port, async function () {
  console.log(`Service running on port ${port} in ${app.get("env")} mode`);
});

然而,我想使用gRPC以及在相同的服务。不幸的是,我不能,因为gRPC服务器也需要它自己的单独的端口,这已经被Express服务器使用。
有没有其他方法可以避免为两个服务器旋转两个容器?
我希望两个服务器使用相同的端口,因为我的目标环境是谷歌云运行。
不幸的是,Google Cloud Run只支持每个服务示例旋转一个容器,所以从我自己的经验来看,我真的很不走运。

umuewwlo

umuewwlo1#

每种语言都有自己的gRPC实现。每种语言的实现都有很多不同之处,有些是由于语言的能力,有些是由于维护人员。
正如jfriend00已经在评论部分分享了一个Stackoverflow link,它声明
无法将gRPC服务器添加到Express服务器。可以在与Express服务器相同的〉进程中运行gRPC服务器,但它们将在不同的端口上服务并独立运行”
目前,Node标准库没有提供与Go语言等效的特性,所以你不能共享Go社区中适用的端口。
有关详细信息,您可以参考这些Stackoverflow Link,它们可能会对您有所帮助。

相关问题