提问者:小点点

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


问题还可能是: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个答案

匿名用户

您可以使用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相同。