7/4继续mqtt 基于paho在android平台上实现MQTT Client间的简单通信

基于paho在android平台上实现MQTT Client间的简单通信

https://blog.csdn.net/daihuimaozideren/article/details/78118793

个人理解:

1、分为broker和client,broker是服务器相当于中转站,client1、2、3任何一个将消息推送到broker上,其他所有订阅了该topic的client都会收到推送。

2、thingsboard平台的服务器端有一个broker,broker可以使用mosquito,Apollo。。。,设备将数据推送到该主题:

v1/devices/me/telemetry

服务器端订阅该主题,就会实时把数据显示出来,就是说。。。做客户端的web应用时候,展现实时数据也可以用mqtt?,mqtt有JavaScript版的接口和包。

3、我的转发服务器,假设都采用mqtt收发data。

发数据:向TB的broker发送主题消息

MqttMessage msg=new MqttMessage();
String msgStr="Hello World";
msg.setPayload(msgStr.getBytes());//设置消息内容
msg.setQos(2);//设置消息发送质量,可为0,1,2.
msg.setRetained(false);//服务器是否保存最后一条消息,若保存,client再次上线时,将再次受到上次发送的最后一条消息。
mClient.publish("my topic",msg);//设置消息的topic,并发送。

这里需要对发送质量进行再次说明。 
(0)level0,最多一次的传输。不管消息是否到达broker,只要发出,client不再关心。 
(1)level1,至少一次的传输。若消息到达broker,broker会回复client一个PUBACK消息,若未收到该回复消息,或超时,client将再次发送,直至收到broker响应。 
(2)level2,这是最高级别的传输。在level1的基础上,保证重复消息不会被二次接收。

断开与broker的连接:

try {
    if(mClient!=null){
        mClient.disconnect();
    }
} catch (MqttException e) {
    e.printStackTrace();
}

接收推送:订阅broker的某个主题


subscribe订阅不成功的原因:

Topic只能写不包含通配符的,但是订阅时传进去的参数topicFilter需要包含通配符

https://blog.csdn.net/putiancaijunyu/article/details/78549834




猜你喜欢

转载自blog.csdn.net/jdk1129/article/details/80907751