鸿蒙Next中如何使用MQTT协议

在鸿蒙Next系统中,如何正确集成和使用MQTT协议进行通信?需要哪些依赖库和权限配置?能否提供一个简单的示例代码说明连接、订阅和发布消息的基本流程?

2 回复

在鸿蒙Next中,可通过[@ohos](/user/ohos)/mqtt模块使用MQTT协议,步骤如下:

  1. 导入模块

    import mqtt from '[@ohos](/user/ohos)/mqtt';
    
  2. 创建客户端

    let client = mqtt.createClient({
      host: 'mqtt://broker.example.com', // 服务器地址
      port: 1883, // 端口
      clientId: 'device_001' // 客户端ID
    });
    
  3. 连接服务器

    client.connect();
    
  4. 订阅主题

    client.subscribe('topic/test', (err) => {
      if (!err) console.log('订阅成功');
    });
    
  5. 发布消息

    client.publish('topic/test', 'Hello MQTT');
    
  6. 接收消息

    client.on('message', (topic, message) => {
      console.log(`收到主题 ${topic} 的消息: ${message}`);
    });
    
  7. 断开连接

    client.end();
    

注意:需在module.json5中声明网络权限:

"requestPermissions": [
  { "name": "ohos.permission.INTERNET" }
]

更多关于鸿蒙Next中如何使用MQTT协议的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙Next(HarmonyOS NEXT)中,您可以使用MQTT协议进行设备间的通信,主要通过系统提供的@ohos.net.mqtt模块实现。以下是基本步骤和示例代码:

1. 添加权限

module.json5文件中添加网络权限:

{
  "module": {
    "requestPermissions": [
      {
        "name": "ohos.permission.INTERNET"
      }
    ]
  }
}

2. 导入模块

import mqtt from '@ohos.net.mqtt';

3. 创建MQTT客户端并连接

// 配置MQTT选项
let options: mqtt.MqttConnectOptions = {
  url: 'tcp://broker.hivemq.com:1883', // MQTT代理地址
  clientId: 'harmony_client_001', // 客户端ID
  userName: '', // 可选用户名
  password: '', // 可选密码
  timeout: 10, // 超时时间(秒)
  keepAliveInterval: 60, // 保活间隔
  cleanSession: true // 清除会话
};

// 创建客户端
let client: mqtt.MqttClient = mqtt.createMqttClient();

// 连接服务器
client.connect(options).then(() => {
  console.log('MQTT连接成功');
}).catch((err: Error) => {
  console.error('连接失败: ' + JSON.stringify(err));
});

4. 订阅主题

client.subscribe('test/topic', { qos: mqtt.QosType.AT_LEAST_ONCE }).then(() => {
  console.log('订阅成功');
}).catch((err: Error) => {
  console.error('订阅失败: ' + JSON.stringify(err));
});

5. 发布消息

let message: mqtt.MqttMessage = {
  payload: 'Hello HarmonyOS', // 消息内容
  qos: mqtt.QosType.AT_LEAST_ONCE, // 服务质量
  retained: false // 是否保留
};

client.publish('test/topic', message).then(() => {
  console.log('消息发布成功');
}).catch((err: Error) => {
  console.error('发布失败: ' + JSON.stringify(err));
});

6. 接收消息

通过设置消息监听器处理接收的消息:

client.on('message', (topic: string, message: mqtt.MqttMessage) => {
  console.log(`收到主题 ${topic} 的消息: ${message.payload}`);
});

7. 断开连接

client.disconnect().then(() => {
  console.log('MQTT连接已断开');
}).catch((err: Error) => {
  console.error('断开失败: ' + JSON.stringify(err));
});

注意事项:

  • 代理服务器:确保使用可访问的MQTT代理(如HiveMQ、EMQX等)。
  • 错误处理:所有操作建议添加.catch处理异常。
  • 资源释放:在页面销毁时调用client.destroy()释放资源。

通过以上步骤,您可以在鸿蒙Next中实现基本的MQTT通信功能。

回到顶部