我在一个免费的heroku实例上使用flask socket.io配置了eventlet。根据flask socket.io文档,我使用flask socket.io在免费的heroku实例上配置了eventlet。https:/flask-socketio.readthedocs.ioenlatest。 运转 socketio.run(app)
将会在安装了eventlet的情况下启动一个webserver。
我有一个本地 react web 应用程序,试图与该应用程序引擎实例建立 WebSocket 连接。该web应用使用socket.io,最初默认为轮询HTTP请求。这些请求都超时了--我无法建立Web socket连接。我不知道是什么原因导致了我的问题,是我的应用引擎配置还是我的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)
这是我的Procfile
web: python3 server.py
这是试图建立连接的网络应用代码。
import io from 'socket.io-client'
const socketURL = "<app-engine-instance-url>:5000"
const socket = io.connect(socketURL)
你提到了Heroku,然后换成了App Engine。我猜你还是指Heroku?
在Heroku上运行的应用程序必须遵守 $PORT
环境变量,并将网站放在该端口上。试试这个。
socketio.run(app, port=int(os.environ.get('PORT', '5000')))
然后从你的客户端应用程序连接到Heroku的应用程序的URL。