提问者:小点点

heroku-server:为什么endpointURL中没有端口?


我做了一个小的Chat-App->React JS聊天客户端和Node-JS(socket.io/express)Web-Socket服务器。

完成测试后,我在Heroku上部署了NodeJS-Web-Socket服务器。

我应该在客户端中使用的URL是const ENDPOINT='https://jorroch-consulting.herokuapp.com/';

让我感到疑惑的是,当我的服务器仍然在localhost上启动时,我不得不使用endpointURL中的一个端口。URL如下所示:const ENDPOINT='localhost:5000';

这是因为我的服务器正在侦听端口5000:server.listen(port,()=>console.log('server has started on port${port}'));

现在,服务器部署在heroku上,客户机没有关于端口5000的信息,但它仍然可以工作。

我的React-Client如何知道哪个端口是正确的?heroku是否将所有请求路由到端口5000?但他们怎么知道?他们扫码了吗?

我在问,因为我想在同一个index.js中创建第二个WebSocket-Express服务器(这可能吗?)文件并将其重新部署到heroku,但如果不使用不同的端口,则无法工作。


共1个答案

匿名用户

应用程序监听您在localhost上决定的端口,在Heroku上,它被动态分配给您,并映射到给定的主机名,即jorroch-consulting.herokuapp.com
访问主机(在HTTPS上)会重新路由到port$port上的内部服务。

Heroku web应用程序只有一个端口($port),所以在同一个web Dyno中不能有两个端口。您可以将dyno扩展为具有多个实例,或者如果第二个服务器提供不同的功能,则部署不同的应用程序。