当前位置: 首页 > 知识库问答 >
问题:

用于部署在Heroku上的python flask web应用程序。前端如何知道动态备份服务器端口?

锺霍英
2023-03-14

问题还可能是:javascript如何获得heroku env变量端口?

我有一个法尔斯克网络应用程序。后端服务器运行如下所示

if __name__ == "__main__":
port = int(os.environ.get("PORT", 5000))

socketio.run(app, host='0.0.0.0', port=port)

我的前端客户端需要与我的服务器来回通信,我需要知道后端正在监听哪个端口。

在frontend index.html中,我有下面的Java脚本

socket = io.connect('0.0.0.0:5050'+ namespace);

我的问题是,我如何从后端知道动态端口?

我在heroku上部署了我的应用程序,我无法绑定固定服务器。我已经将我的heroku配置var设置为

Config Vars
PORT: 5050

我以为每次我的应用程序被重新部署,这个端口将被抓取和使用,但它不是那样的。每次我重新部署时,服务器监听一个随机端口。

能不能有人帮忙,提前感谢。

共有1个答案

赫连飞沉
2023-03-14

您可以使用web客户端中的location对象来找出您需要了解的关于服务器的一切。

var HOST = location.origin.replace(/^http/, 'ws')
var ws =  io.connect(HOST + namespace);

但是,在下面的文档中,它们显示了正在初始化的客户端套接字,但没有参数。你试过这个吗?

 var socket = io();

我猜使用“默认构造函数”可以实现与上面相同的操作:使用位置并更改协议。

他们还说,您将启用基于会话的亲和力。

这都来自heroku sockets文档https://devcenter.heroku.com/articles/node-websockets,尽管本文提到了基于节点的服务器,其原理与flask相同。

 类似资料:
  • 这个问题类似于服务器和客户端之间通信的一般问题,但是这个问题可能是heroku特有的,因为服务器端口是由heroku在'process.env.port'变量中提供的。 我的后端Express/MongoDB应用程序已经部署在Heroku上。它侦听分配的端口=process.env.port,这是服务器每次启动时的一个新端口 前端vue.js运行在同一个express服务器上,并使用axios进行

  • 问题内容: 我有一个dist文件夹,其中包含CSS,字体,JS文件夹和一个针对Vue.js最小化的文件,可以部署和使用。我想使用Node.js运行此应用程序。 如何将其设置为仅运行并将其部署在请求的特定端口上?不知道如何构建它,或者不确定是否需要以特定方式构建它以运行此Vue应用程序。任何帮助将不胜感激。 问题答案: 由于Vue只是一个前端库,因此托管它和执行诸如提供资产之类的最简单方法是创建一个

  • 在jboss 7.1.1As上部署mule应用程序时面临问题。我正在使用jboss 7.1.1as。我在eclipse中创建了动态项目。将mule配置文件复制到WEB-INF/classes文件夹中。导入lib文件夹中的所有mule jar,下面是我的配置文件 以下是我的web.xml档案 我导出我的应用程序作为战争file.and部署到jboss服务器然后得到以下错误 注意,我已经导入了jar文

  • 我试图构建一个ReactJS应用程序,我希望在tomcat服务器上托管它。我已经使用命令npm run build,构建已经就绪…我在tomcat服务器中的哪里复制这些文件?我是否需要创建另一个应用程序并将其部署到调用React应用程序的服务器上?

  • 我有一个专用的服务器上,我目前正在运行4个PHP网站。服务器配置为Apache+Nginx。每当我托管php网站时,我将文件放在public_html文件夹中,它就会开始运行。但现在我想安装nodejs应用程序。我只是对如何处理server.js文件感到困惑?又如何让它继续运行?我应该使用pm2还是永远保持它在我的ubuntu主机上永远运行。如何运行域名为example.com的网站

  • 我有一个Java应用程序(打包成一个JAR ),它通过websockets与一个聊天程序(Slack)交互。据我所知,我的应用程序不需要绑定到特定的端口才能工作——它只是连接到Slack的实时消息API。它不是作为一个网络应用或网络服务器。它不会在任何端口上侦听传入的请求,因为它不需要这样做。我希望有人能够点击我的应用程序的“部署到Heroku”按钮,我希望Java应用程序在应用程序部署后立即运行