问题还可能是: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
我以为每次我的应用程序被重新部署,这个端口将被抓取和使用,但它不是那样的。每次我重新部署时,服务器监听一个随机端口。
能不能有人帮忙,提前感谢。
您可以使用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相同。