> 文档中心 > 【HarmonyOS应用开发备忘录】一、鸿蒙应用之JavaUI的MQTT客户端测试

【HarmonyOS应用开发备忘录】一、鸿蒙应用之JavaUI的MQTT客户端测试

  • 参考资料
    mqtt官网

  • 依赖包下载:
    eclipse.paho.client.mqttv3

  • 其他语言版下载
    MQTT Client Library
    其他库

1.添加网络权限

【HarmonyOS应用开发备忘录】一、鸿蒙应用之JavaUI的MQTT客户端测试

2.添加库

把下载的库添加到libs目录下,然后右键Add As Library
【HarmonyOS应用开发备忘录】一、鸿蒙应用之JavaUI的MQTT客户端测试

3. 建立连接

设置好参数,这里使用本机的emqx服务器

    private void mqttInit() throws MqttException {     MqttClient mqttClient = new MqttClient(      "tcp://192.168.10.7:1883",      MqttClient.generateClientId(),      new MemoryPersistence()     );     mqttClient.connect();    }

可以连接:
【HarmonyOS应用开发备忘录】一、鸿蒙应用之JavaUI的MQTT客户端测试

4.发布主题

mqttClient.publish("demo","hello".getBytes(StandardCharsets.UTF_8),1,false);

可以收到:
【HarmonyOS应用开发备忘录】一、鸿蒙应用之JavaUI的MQTT客户端测试

5.订阅主题

订阅:

mqttClient.subscribe("demo2",1);

回调函数:

 mqttClient.setCallback(new MqttCallback() {     @Override     public void connectionLost(Throwable throwable) {     }     @Override     public void messageArrived(String s, MqttMessage mqttMessage) throws Exception {  try{      getUITaskDispatcher().asyncDispatch(()->{   textSub.setText("rx ok");      });  }  catch (Exception e)  {      e.printStackTrace();  }     }     @Override     public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {     } });

注意,不能在回调函数直接更新UI,如果需要,使用如下方法:

getUITaskDispatcher().asyncDispatch(()->{   //UI更新。。。      });

参考资料