对于部署在heroku上的python flask web应用程序。前端如何知道动态支持的服务器端口?

时间:2016-12-18 01:41:56

标签: python heroku flask socket.io

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

我有一个falsk网络应用程序。 后端服务器运行如下

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

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

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

在前端index.html中,我有以下java脚本

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

我的问题是,我怎么知道后端的动态端口?

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

Config Vars
PORT: 5050

我认为每次重新部署我的应用程序时,都会抓住并使用此端口,但它不是那样的。每次重新部署时,服务器都会在随机端口上进行监听。

有人可以提前帮助,谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用Web客户端中的位置对象来查找有关服务器的所有信息。

x

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

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

我猜测使用"默认构造函数"完成与上述相同的操作:使用位置并更改协议。

他们还说你会启用基于会话的亲和力。

这全部来自heroku套接字文档https://devcenter.heroku.com/articles/node-websockets虽然文章引用了基于节点的服务器,但原理与烧瓶相同。