基于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