vue 怎样连接wss,我用官方文档配置证书8084,用mqttx客户端能连上,但是用websocket客户端连不上

环境

  • EMQX 版本:5.0.16
  • 操作系统版本:centos+windows

重现此问题的步骤

  1. 配置了8084用openssl设置了证书,
  2. mqttx链接成功,java也连接成功
  3. vue连接失败,第一次握手失败,需要vue带着证书请求wss吗

预期行为

实际行为

需要vue携带证书请求吗?但是官方的broker是不用带证书的vue能连接上

1、我用官方给的vue2、3的demo连接的,还用了官方提供的websocket客户端连接的
2、链接自己的8084不行链接官方的brocker可以
3、java c++ 安卓都可以链接
4、链接的时候没有到emq第一次握手直接失败
5、证书是我按照官方文档openssl自签的、验过了证书没问题、和域名保持一致


链接自己的

您好,您使用 MQTT X 连接您自己服务的 wss 也是可以连接上的吗?

是的

那连接时请确保你打开了 SSL 安全(SSL Secure)开关

我用客户端指导怎么打开,我用js怎么打开ssl,我把本地localhost改成https也不行,但是链接官方的brocker都可以

我就想知道官方的brocker怎么配置的,我链接官方提供的8084一直可以连接,都没问题

同样的情况,emqx使用self signed + ca.pem,已经成功连接,vue + mqtt.js无法连接成功。提示Certificate Unknown

其实是浏览器禁止了自签的ssl它认为是不安全的。可以在浏览器上设置添加证书

这种只能自己机子上玩玩,最后还是得用nginx代理吧

nginx配置:
server {
        listen 8084 ssl;
        server_name localhost;
        ssl_certificate /root/emqx-ssl/emqx.pem; #EMQX——TLS Cert
        ssl_certificate_key /root/emqx-ssl/emqx.key; #EMQX——TLS Key
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;

        location / {
            proxy_pass wss://*.*.*.105:8084/;
            proxy_http_version 1.1;
            proxy_read_timeout 3600s;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $connection_upgrade;
        }
    }
1 个赞

是的,跟楼上一样。wss请求还是建议用nginx代理最方便,我们的项目也是nginx代理转发的

感谢!用你的 nginx 配置终于能用 mqtt.js 连上了 wss 了。