微信小程序使用mqtt开发可以,真机不行

以下可以解决我的问题,请一步一步跟着做,有可能版本不一样就失败了

一、下载mqtt.js

前往蓝奏云 https://wwue.lanzouo.com/iQPdc1k50hpe

下载好后将.txt改为.js

然后放入项目里

二、连接mqtt

javascript 复制代码
const mqtt = require('../../utils/mqtt.min');
let client;
// 连接选项
const options = {
  connectTimeout: 30000, // 默认 30 * 1000毫秒,收到 CONNACK 之前等待的时间,即连接超时时间。
  clientId: 'mqttjs_' + Math.random().toString(16).substring(2, 8), // 客户端 ID
  username: 'l', // 连接用户名
  password: 'h0', // 连接密码
  clean: true, // 设置为 false 以在离线时接收 QoS 1 和 2 消息
};
client = mqtt.connect(`wxs://l.com/appletMqtt`, options);
// 链接异常处理
client.on('error', (error) => {
  console.log('连接失败:', error);
});
// 订阅
client.subscribe(
  '/szdx/#',
  {
    qos: 1,
  },
  (error) => {
    if (!error) {
      console.log('订阅成功/szdx/device/in/#');
    } else {
      console.log('订阅失败/szdx/device/in/#');
    }
  }
);
// 接收消息处理
client.on('message', (e, a) => {
  if (e.search('/szdx') > -1) {
    let c = JSON.parse(String(a));
  }
});

三、nginx配置(因为小程序的bug)

emqx官网

需要有ssl证书

bash 复制代码
server {
    listen  443 ssl;        
    server_name xxx.emqx.io; 
    ssl_certificate   cert/***.pem;
    ssl_certificate_key  cert/***.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 /appletMqtt {
      proxy_pass http://127.0.0.1:8083/mqtt;
      proxy_set_header Host $host;
      proxy_set_header Sec-WebSocket-Protocol mqtt;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      # client_max_body_size 35m;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";    
    }
}

四、最后就可以连上了(别问为什么,有用就行,哈哈)

注意,每一步都是有用的哦,如果你的不行,那么就原样复制一下

相关推荐
幽络源小助理4 小时前
美食推荐系统微信小程序
微信小程序·小程序·美食
帅次5 小时前
Flutter Container 组件详解
android·flutter·ios·小程序·kotlin·iphone·xcode
深空数字孪生6 小时前
小程序 UI 设计,怎样在方寸间实现高效交互
ui·小程序·交互
幽络源小助理7 小时前
超市售货管理平台小程序
小程序
帅次9 小时前
Flutter setState() 状态管理详细使用指南
android·flutter·ios·小程序·kotlin·android studio·iphone
浩宇软件开发10 小时前
基于微信小程序的天气预报app
微信小程序·小程序·天气app
用户61204149221310 小时前
小程序做的超市商品管理系统
微信小程序·敏捷开发·小程序·云开发
说私域12 小时前
基于开源AI智能名片链动2+1模式S2B2C商城小程序的项目投资保障研究
人工智能·小程序·开源·零售
程序员小刘12 小时前
基于鸿蒙 HarmonyOS 5 打车小程序案例
华为·小程序·harmonyos
顽强d石头12 小时前
【uniapp】小程序中input输入框的placeholder-class不生效
前端·小程序·uni-app