В настоящее время я работаю над веб-приложением социальной сети, которое включает в себя функции чата, чат работает нормально, когда я нахожусь на 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 - «происхождение не разрешено»