新手求指导

  • Creator 版本: 2.4.5

  • 目标平台: 头条小游戏,web

本人使用nodejs写了一个websocket服务端并部署到阿里云ECS,端口打开了,DNS解析也已经加了A记录,nginx也新增了server配置,如下:
server {
listen 443 ssl;
server_name xx.xx.com;

    ssl_certificate "/etc/pki/nginx/server.pem";
    ssl_certificate_key "/etc/pki/nginx/private/server.key";
    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout  10m;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;
    ssl_verify_client off;

    location / {
       proxy_pass http://xx.xx.xx.xx:31697/;
       proxy_set_header  X-Real-IP  $remote_addr;
       proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header  X-Forwarded-Proto   $scheme;
       proxy_read_timeout 500;
       proxy_http_version 1.1;

       # ws 协议专用头
       proxy_set_header                Upgrade $http_upgrade;
       proxy_set_header                Connection "Upgrade";
    }
}
server {
    listen       80;
    server_name  xx.xx.com;

    location / {
       proxy_pass http://xx.xx.xx.xx:31697/;
       proxy_set_header  X-Real-IP  $remote_addr;
       proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header  X-Forwarded-Proto   $scheme;
       proxy_set_header  X-Nginx-Proxy true;
       proxy_redirect off;
       proxy_read_timeout 500;
       proxy_http_version 1.1;

       # ws 协议专用头
       proxy_set_header                Upgrade $http_upgrade;
       proxy_set_header                Connection "Upgrade";
    }
}

使用postman或wscat工具通过域名都能连接服务端,但是使用Cocos creator内置的Websocket或其它vue方式连接nginx中配置的域名不能连接,
本地websocket代码
this._websocket = new WebSocket(ws://xx.xxx.com);
this._websocket = new WebSocket(wss://xxs.xxx.com);
错误如下图

image
只有改用域名+端口方式才能连接成功
this._websocket = new WebSocket(ws://xx.xxx.com:3002);这种方式可以连接成功
但这样在手机端的浏览器还是连接失败,本人受困此问题数日,求知道的大哥帮解答一下原因,不胜感激。

你这个确实奇怪了,但是我建议你清除了缓存再看看,可能缓存在本地了,所以返回的一直是错的

https只能用域名。 普通的才能用ip。