HarmonyOS 鸿蒙Next mqtt连接不上,有偿求最简单成功连接例子
HarmonyOS 鸿蒙Next mqtt连接不上,有偿求最简单成功连接例子
用的最新的套件,真机环境。 url前缀用wss显示连接成功,但订阅主题是没消息,而且是url乱填也是这样子,换成其它前缀都是失败,可远程有偿求救
1.新建项目
2.ohpm i @ohos/mqtt
3.在src/main/ets下新建mqtt目录,新建文件MyMqttClient.ets
import { MqttAsync, MqttClient, MqttQos, MqttSubscribeOptions } from '[@ohos](/user/ohos)/mqtt'
export class MyMqttClient {
private mqttClient: MqttClient|null=null
public createMqttClient() {
let serverUrl: string ="ws://192.168.11:188"
let clientId: string = "clientId_panda" //'客户端,唯一就行'
if(MqttAsync==undefined){
console.log("1111111");
}else{
console.log("222222222");
}
// return ;
this.mqttClient = MqttAsync.createMqtt({
url: serverUrl,
clientId: clientId,
persistenceType: 1
})
}
public async connectMqtt() {
let result: boolean
// if(this.mqttClient){
// console.log("1111111111111");
// }else {
// console.log("2222222222222");
// }
if(this.mqttClient){
await this.mqttClient.connect({
userName: 'MQTT用户名',
password: '连接密码',
connectTimeout: 30,
MQTTVersion: 0
}).then(() => {
result = true
console.info('连接成功')
}).catch(() => {
result = false
console.warn('连接失败')
})
}
}
public async subscribe() {
let subscribeOption: MqttSubscribeOptions = {
topic: '你的主题',
qos: 0
}
if(this.mqttClient){
await this.mqttClient.subscribe(subscribeOption).then((data) => {
console.info('MQTT subscribe success ====>', JSON.stringify(data))
}).catch((err: object) => {
console.error('MQTT subscribe failed, Cause:', JSON.stringify(err))
})
this.mqttClient.messageArrived((err, data) => {
if (err) {
console.error('MQTT messageArrived failed, Cause:', JSON.stringify(err))
}else {
console.error('MQTT messageArrived success, 消息内容:', JSON.stringify(data))
}
})
}
}
public pushMessage(pic: string, mes: string, qo: MqttQos) {
if(this.mqttClient){
this.mqttClient.publish({
topic: pic,
qos: qo,
payload: mes
}, (error, data) => {
if (error) {
console.error("Push message failed, Cause:", JSON.stringify(error))
}else {
console.info("Push message success", JSON.stringify(data))
}
})
}
}
public destroy() {
if(this.mqttClient){
this.mqttClient.destroy().then((data) => {
console.debug('Destroy the mqtt client', JSON.stringify(data))
})
}
}
}
例子应该没问题 ,引用的库有bug,默认安装的不是最新的库,
升级最新的包,ohpm install @ohos/mqtt@2.0.13-rc.1
修复mqttAsync_空指针问题
我成功了模拟器上,升级了DevEco Studio 5.0.1 Beta3,SDK 12。我没真机
你是模拟器可以吗,真机不行
针对HarmonyOS 鸿蒙Next mqtt连接不上的问题,以下是一个简单的成功连接例子:
-
安装mqtt插件:
使用三方仓库mqtt插件,安装命令:ohpm i @ohos/mqtt。
-
mqtt函数封装:
在项目中新建一个mqtt目录,并在该目录下创建一个MyMqttClient.ets文件,进行mqtt相关函数的封装。包括创建mqtt客户端、连接mqtt服务器、订阅主题、发布消息以及销毁mqtt客户端等功能。
-
页面按钮调用:
在页面的ets文件中,引入MyMqttClient类,并通过按钮点击事件来调用mqtt的相关功能。例如,创建mqtt客户端、连接到服务器、订阅主题、发送消息以及销毁客户端等。
-
注意事项:
- 确保mqtt服务器地址和端口号正确无误。
- 客户端ID需要唯一。
- 连接时需要提供正确的用户名和密码(如果mqtt服务器需要认证的话)。
- 订阅的主题需要存在,且客户端有权限订阅。
如果遵循以上步骤仍无法连接,请检查网络设置、服务器状态以及代码实现是否有误。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。