代码之家  ›  专栏  ›  技术社区  ›  Max Mister

套接字.io对于Nginx+NodeJS,跨源请求只能部分工作

  •  1
  • Max Mister  · 技术社区  · 6 年前

    和一个 服务器。取决于 子域

    现在我想用套接字.io来自另一个地方。 但当我发出声音或听到声音时,它就不起作用了。

    我没有得到任何例外,但事件不会触发。

    后端代码:

    io.set('origins', '*:*');
    
    io.on('connection', function (client) {
        console.log(client.id + " joined!"); //event fired
    
        client.on('helloworld', function () {
            console.log(client.id + " said hello!"); //event not fired
        });
    }
    

    前端代码:

    var io = io("https://subdomain.example.com");
    io.emit("helloworld");
    

    Nginx脚本:

    server{
        listen 443 ssl; # managed by Certbot
        ssl_certificate /etc/letsencrypt/live/subdomain.example.com/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/subdomain.example.com/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_name subdomain.example.com;
    
        location / {
            limit_conn addr 10;
            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_pass    http://127.0.0.1:7005/;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "Upgrade";
            proxy_set_header Access-Control-Allow-Origin "*";
            proxy_set_header Access-Control-Allow-Headers "origin, x-requested-with, content-type";
            proxy_set_header Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS";
        }
    }
    

    我尝试过的可能性:

    Socket.io + NodeJS + Nginx + SSL

    Cross-domain connection in Socket.IO

    Socket.io + Node.js Cross-Origin Request Blocked

    2 回复  |  直到 6 年前
        1
  •  1
  •   Max Mister    6 年前

    NodeJS后端 代码 我只听了“/”名称空间

    用websockets搜索错误的一个好方法是在googlechrome中打开 开发工具->网络->?EIO=3&transport=websocket&sid=qdozsxxtmoh0jcjaaaj->帧

    在这里您可以看到websockets“发送”和“接收”的数据。

    Dev Tools -> Network -> ?EIO=3&transport=websocket&sid=qdozsXxTmOHh0JcJAAAJ -> Frames

        2
  •  0
  •   Praveen penumaka    6 年前

    尝试两件事:

    1. 在前端代码中,尝试仅在连接完成后发出 成功的