关于前端开发中使用mqtt时,实现动态代理IP的问题

726 阅读1分钟

当我们前端使用mqtt来实现实时数据通信的时候,我们不想在代码里写死MQTT的IP地址。

这时候我们可以像普通HTTP接口一样通过代理来解决。

本文中服务端的mqtt地址为: ws://xxx.xxx.1.237:61614

注意: 前端使用的话,要求服务端开通ws的使用方式,因为前端不能使用mqtt://,这是TCP的方式。而我们前端只能使用ws的方式,ws://开头。

1. 本地开发环境通过vue.config.js配置

这个是我们代码中请求mqtt的地址。

    const connectUrl = `ws://${location.host}/mqtt

vue.config.js中,我们这样配置

    devServer: {
       "/mqtt": {
        target: "ws://xxx.xxx.1.237:61614",
        ws: true,    // 开启websocket代理
        changeOrigin: true,
      }, 
    }

这时候,我们看一下效果,status状态码为101,正常运行

微信图片_20221028115604.jpg

2. 线上环境通过nginx代理来配置

下面是服务器上的nginx配置

 server {
        listen       8080;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
 
        # 这块用来配置mqtt代理服务
        # proxy_http_version 代理时使用的http版本
        location /mqtt {
           proxy_pass http://xxx.xxx.1.237:61614/mqtt;
           proxy_http_version 1.1;  
           proxy_set_header Upgrade $http_upgrade;
           proxy_set_header Connection "Upgrade";
        }
  }

我这边使用的nginx版本为1.20.0,这样配置是没有问题的。

结尾:好了,关于前端开发中使用mqtt时,实现动态代理IP的问题到这里就说的差不多了。有问题的,欢迎各位大佬评论区指出。码字不易,家人们点个赞再走吧!!!