Flask -SocketIO отказывается от подключения при развертывании - PullRequest
0 голосов
/ 17 февраля 2020

В настоящее время я работаю над веб-приложением социальной сети, которое включает в себя функции чата, чат работает нормально, когда я нахожусь на localhost. У меня проблема в том, что я получаю сообщение об ошибке от SocketIO, когда пытаюсь подключить клиент к (размещенному) серверу.

Ошибка выглядит следующим образом: GET http://127.0.0.1/socket.io/?EIO=3&transport=polling&t=N1Kh0TS net :: ERR_CONNECTION_REFUSED

Теперь я уже давно пытаюсь устранить эту проблему с помощью случайных решений в Интернете, но не могу полностью обдумать это.

бег .py:

from random import app, socketio

if __name__ == '__main__':
    socketio.run(app, debug=True)

в моем rout.py мое connect-событие выглядит так:

@socketio.on('user_con')
def receive_connection(data):
    # join the desired channel
    join_room(data['channel'])
    print('User ' + str(data['user']) + ' successfully joined channel : ' + str(data['channel']))

клиентская сторона подключается так:

//Connect the socket to our server
   var socket = io.connect('http://127.0.0.1:5000');
        socket.on('connect', function() {
          var connection_data = {
            user : '{{ current_user.id }}',
            channel : '{{ channel.name }}'
          }
          //send the connection data
          socket.emit('user_con', connection_data);
        });

Обратите внимание, что код действительно хорошо работает на локальной машине, но не развернут. Все размещено на сервере linux.

Буду очень признателен за вашу помощь. Спасибо.

EDIT2: Это наш nginx файл

server {
    server_name #censored#;

    location /static {
        alias /home/admin/Prototyp_1/#censored#/static;
    }

    location / {

        proxy_pass http://localhost:8000;
        include /etc/nginx/proxy_params;
        proxy_redirect off;
    }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/#censored#/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/#censored#/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot



}

server {
    if ($host = #censored#) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    if ($host = #censored#) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    listen 80;

    server_name #censored#;
    return 404; # managed by Certbot
}

edit3: мы добавили следующее в наш код

    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:5000/socket.io;
    }

Интересно, что когда мы меняем порт в html на 5000, появляется ошибка «отказано в соединении», а в 8000 - «происхождение не разрешено»

...