Socketio не публикуется в приложении NGINX Flask - PullRequest
0 голосов
/ 24 октября 2019

У меня есть приложение Flask, работающее за NGINX, и я использую Gunicorn для развертывания. При развертывании все работает отлично, я могу получить IP-адрес своего сервера и увидеть, что приложение работает без проблем, однако, когда я выполняю действие, которое использует socketio, действие не передается бэкэнду, и я считаю, что это проблемас моей конфигурацией на NGINX. Мой файл conf.d содержит следующие данные:

server {
    listen 80;
    server_name MY_SERVER_IP;

    location / {
        proxy_pass http://127.0.0.1:8000;
    }

    location /socket.io {
        include proxy_params;
        proxy_http_version 1.1;
        proxy_buffering off;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_pass http://127.0.0.1:8000/socket.io;
    }
}

Я развертываю приложение с помощью

gunicorn -k geventwebsocket.gunicorn.workers.GeventWebSocketWorker -w 1 app:app

В моем файле app.py я запускаю сервер socketio с

socketio.run(app, host='127.0.0.1', port=80, debug=True)

Также это видно в консоли ...

socket.io.min.js:2 GET http://127.0.0.1:8000/socket.io/?EIO=3&transport=polling&t=MuA1z9K net::ERR_CONNECTION_REFUSED

Все работает локально. Пожалуйста, имейте в виду, я довольно новичок в развертывании Flask с socketio.

Ответы [ 2 ]

0 голосов
/ 27 октября 2019

Мое подключение к socket.io было установлено неправильно. Я должен был иметь var socket = io ();в моем сценарии js, в отличие от var socket = io.connect ('127.0.0.1:8000');за документацию

0 голосов
/ 25 октября 2019

Ваш сервер работает на порту 8000, поэтому ваш оператор proxy_pass должен идти на этот порт, а не 5000:

proxy_pass http://127.0.0.1:8000/socket.io;

Также обратите внимание, что когда вы запускаете сервер через gunicorn, строка socketio.run() делаетне выполняется, это используется, когда вы не используете сторонний веб-сервер, такой как gunicorn или uwsgi, и я предполагаю, что вы используете локально.

...