uni-app云函数中使用mqtt接收消息

javascript 复制代码
const mqtt = require('mqtt');

exports.main = async (event, context) => {
  return new Promise((resolve, reject) => {
    // 连接到 MQTT 服务器
    const client = mqtt.connect('wss://mqtt.example.com:8083/mqtt', {
      username: 'your-username',
      password: 'your-password',
    });

    // 连接成功
    client.on('connect', () => {
      console.log('MQTT 连接成功');
      client.subscribe('test/topic', (err) => {
        if (err) {
          console.error('订阅失败:', err);
          reject(err);
        } else {
          console.log('订阅成功');
        }
      });
    });

    // 接收消息
    client.on('message', (topic, message) => {
      console.log(`收到消息: ${message.toString()}`);
      resolve({
        topic,
        message: message.toString(),
      });
    });

    // 连接失败
    client.on('error', (error) => {
      console.error('MQTT 连接失败:', error);
      reject(error);
    });
  });
};

注意: 需要用return new Promise((resolve, reject) => { 包起来。我没包起来,导致项目中可用,但是云函数中用不了。

相关推荐
前端一课几秒前
【vue高频面试题】第 13 题:Vue 的 `nextTick` 原理是什么?为什么需要它?
前端·面试
前端一课几秒前
【vue高频面试题】第 12 题:Vue(尤其 Vue3)中父子组件通信方式有哪些?区别是什么?
前端·面试
前端一课3 分钟前
解释watch和computed的原理
前端·面试
前端一课5 分钟前
【vue高频面试题】第 18 题:Vue3 响应式原理中的 effect、依赖收集与依赖触发
前端·面试
前端一课5 分钟前
【vue高频面试题】第 19 题:Vue3 性能优化技巧
前端·面试
前端一课8 分钟前
【vue高频面试题】第 15 题:computed vs watch 区别 + 使用场景
前端·面试
前端一课8 分钟前
【vue高频面试题】第 20 题:Vue3 生命周期 + watch 执行顺序
前端·面试
前端一课8 分钟前
【vue高频面试题】第 16 题:Vue3 响应式原理深度解析(Proxy + effect 栈 + 依赖追踪)
前端·面试
执笔论英雄12 分钟前
【大模型推理】小白教程:vllm 异步接口
前端·数据库·python
炒毛豆12 分钟前
vue3+ant design vue实现表单验证失败后,自动滚动到失败的位置(scrollToField)
前端·javascript·vue.js