在heroku上部署带有eventlet的Flask Socket.io应用程序

时间:2020-05-03 05:30:22

标签: python flask heroku socket.io flask-socketio

我在免费的heroku实例上使用配置了eventlet的flask socket.io。根据flask socket.io文档:如果安装了eventlet,运行socketio.run(app)的{​​{3}}将启动Web服务器。

我有一个本地React Web应用程序试图与此应用程序引擎实例建立WebSocket连接。该Web应用程序使用socket.io,最初默认为轮询HTTP请求。这些请求全部超时-我无法建立Web套接字连接。我不确定是什么引起我的问​​题,无论是我的应用程序引擎配置还是我的flask socket.io设置。

这是我关于flask socket.io的初始化代码:

app = Flask(__name__)
socketio = SocketIO(app)
socketio.init_app(app, cors_allowed_origins="*")
..
..
if __name__ == '__main__':
    socketio.run(app, debug=True)

这是我的个人档案:

web: python3 server.py

以下是尝试建立连接的Web应用代码:

import io from 'socket.io-client'
const socketURL = "<app-engine-instance-url>:5000"
const socket = io.connect(socketURL)

1 个答案:

答案 0 :(得分:0)

您提到了Heroku,然后切换到App Engine。我想你仍然是说Heroku吗?

在Heroku上运行的应用程序必须遵循$PORT环境变量并将网站放在该端口上。试试这个:

socketio.run(app, port=int(os.environ.get('PORT', '5000')))

然后从您的客户端应用程序连接到您应用程序的Heroku URL。