Развертывание приложения Flask Socket.io с эвентлетом на героку - PullRequest
0 голосов
/ 03 мая 2020

Я использую flask socket.io, настроенный с помощью eventlet на бесплатном экземпляре heroku. Согласно документации flask socket.io: https://flask-socketio.readthedocs.io/en/latest/ при работе socketio.run(app) запустит веб-сервер, если установлен eventlet.

У меня есть локальное реагирующее веб-приложение, пытающееся установить sh соединение WebSocket с этим экземпляром ядра приложения. Веб-приложение использует socket.io и изначально по умолчанию опрашивает HTTP-запросы. Эти запросы все время ожидания ... Я не могу установить sh подключение через веб-сокет. Я не уверен, что может быть причиной моей проблемы, будь то конфигурация ядра моего приложения или моя 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)

1 Ответ

0 голосов
/ 03 мая 2020

Вы упомянули Heroku, затем переключились на App Engine. Полагаю, вы все еще имели в виду Heroku?

Приложение, работающее на Heroku, должно учитывать переменную окружения $PORT и размещать веб-сайт на этом порту. Попробуйте это:

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

Затем из вашего клиентского приложения подключитесь к URL Heroku для вашего приложения.

...