Javascript Flask SocketIO在部署时拒绝连接

Javascript Flask SocketIO在部署时拒绝连接,javascript,jquery,flask,socket.io,flask-socketio,Javascript,Jquery,Flask,Socket.io,Flask Socketio,我目前正在开发一个包含聊天功能的社交网络webapp,当我在localhost上时,聊天效果很好。 我遇到的问题是,当我尝试将客户端连接到(托管的)服务器时,从SocketIO得到一个错误 错误如下:GET net::ERR\u连接被拒绝 很长一段时间以来,我一直尝试在网上用随机解决方案来解决这个问题,但我不能完全理解这一点 run.py文件: from random import app, socketio if __name__ == '__main__': socketio.ru

我目前正在开发一个包含聊天功能的社交网络webapp,当我在localhost上时,聊天效果很好。 我遇到的问题是,当我尝试将客户端连接到(托管的)服务器时,从SocketIO得到一个错误

错误如下:GET net::ERR\u连接被拒绝

很长一段时间以来,我一直尝试在网上用随机解决方案来解决这个问题,但我不能完全理解这一点

run.py文件:

from random import app, socketio

if __name__ == '__main__':
    socketio.run(app, debug=True)
在my routes.py中,我的连接事件如下所示:

@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);
        });
客户端的连接方式如下:

@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
}
编辑3:我们在代码中添加了以下内容

    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时,错误是“不允许原始端口”

通常,公共端口是8080美元或80美元。使用8000的逻辑是什么?我想我的意思不是flask在8000上运行,而是gunicorn,因为这是gunicorn的默认端口?您看过关于如何配置nginx的Flask SocketIO文档了吗。在nginx中,默认值为80端口,其中location server_name_uu是上面为url定义的变量,location/socket.io在此还应提供currect路径