Python nginx反向代理实现后,Js客户端与Flask socketio连接,但不接收任何消息

Python nginx反向代理实现后,Js客户端与Flask socketio连接,但不接收任何消息,python,nginx,flask,socket.io,flask-socketio,Python,Nginx,Flask,Socket.io,Flask Socketio,出于某种原因,我的Angular客户端显然成功地与后端服务器连接,但它没有收到任何消息。既没有直接消息也没有广播 这个问题是在使用配置为后端反向代理的Nginx之后出现的。我查看了flask socketio模块的最新官方文档,但仍然没有发现任何关于发生了什么的线索 在客户端上,我连接并准备接收以下消息: const API = "http://146.250.180.213/api/" :: socket: io; :: this.socket = io(API); ::

出于某种原因,我的Angular客户端显然成功地与后端服务器连接,但它没有收到任何消息。既没有直接消息也没有广播

这个问题是在使用配置为后端反向代理的Nginx之后出现的。我查看了flask socketio模块的最新官方文档,但仍然没有发现任何关于发生了什么的线索

在客户端上,我连接并准备接收以下消息:

const API = "http://146.250.180.213/api/"
::
socket: io;
::
    this.socket = io(API);
    ::
    this.socket.on('connect', function() {
                console.log('Conection with server estblished - socketio');
            });
    ::
    this.socket.on('update_monitor', (data: any) => {
        console.log('Broadcasted message received! Data:', data);
    });
在Flask上,我启动服务器并使用以下命令定义端点:

app = Flask(__name__)
socketio = SocketIO(app)

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

我使用“test_endpoint”通过向Postman请求来测试socketio机制

在Nginx上,我遵循了

无论是在客户端还是后端,我都看到它们连接在一起,但客户端从未收到任何消息

已经检查了nginx docker日志输出,没有异常情况发生。在任何地方都没有任何错误消息。有什么线索吗?建议?

解决方案是使用http://146.250.180.213/ 作为API url,即不带/API/名称空间

@app.route('/test_endpoint', methods=['GET'])
def test_endpoint():
    socketio.emit('update_monitor', {"mrtp": app.config['MOST_RECENT_TIMESTAMP_PROCESSED'], 'updated_elements': ['ESICAS23C_ESICAS23']})
    return jsonify({'message': 'ok'}), 200

@socketio.on('connect')
def connect():
    print('Client connected')
server {
    listen 0.0.0.0:80;

    root   /usr/share/nginx/html;
    index  index.html index.htm;
    include /etc/nginx/mime.types;

    location / {
        try_files $uri /index.html;
    }

    location /socket.io {
        # include proxy_params; dont know what this stands for
        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;
    }

    location /grafana/ {
            proxy_pass http://localhost:3000/;
            proxy_hide_header X-Frame-Options;
    }

    location /api {
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_hide_header X-Frame-Options;
            proxy_connect_timeout       9999;
            proxy_send_timeout          9999;
            proxy_read_timeout          9999;
            send_timeout                9999;
            rewrite  ^/api/(.*)  /$1 break;
            proxy_pass http://localhost:5000;
    }
}