MqttClient resubscribe on reconnect
This commit is contained in:
@@ -236,6 +236,26 @@ void MqttClient::loop()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MqttClient::resubscribe()
|
||||||
|
{
|
||||||
|
// TODO resubscription limited to 256 bytes
|
||||||
|
if (subscriptions.size())
|
||||||
|
{
|
||||||
|
MqttMessage msg(MqttMessage::Type::Subscribe, 2);
|
||||||
|
|
||||||
|
// TODO manage packet identifier
|
||||||
|
msg.add(0);
|
||||||
|
msg.add(0);
|
||||||
|
|
||||||
|
for(auto topic: subscriptions)
|
||||||
|
{
|
||||||
|
msg.add(topic);
|
||||||
|
msg.add(0); // TODO qos
|
||||||
|
}
|
||||||
|
msg.sendTo(this); // TODO return value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
MqttError MqttClient::subscribe(Topic topic, uint8_t qos)
|
MqttError MqttClient::subscribe(Topic topic, uint8_t qos)
|
||||||
{
|
{
|
||||||
debug("subsribe(" << topic.c_str() << ")");
|
debug("subsribe(" << topic.c_str() << ")");
|
||||||
@@ -341,9 +361,9 @@ if (message.type() != MqttMessage::Type::PingReq && message.type() != MqttMessag
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case MqttMessage::Type::ConnAck:
|
case MqttMessage::Type::ConnAck:
|
||||||
// TODO what more on connack ?
|
|
||||||
mqtt_connected = true;
|
mqtt_connected = true;
|
||||||
bclose = false;
|
bclose = false;
|
||||||
|
resubscribe();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MqttMessage::Type::SubAck:
|
case MqttMessage::Type::SubAck:
|
||||||
|
|||||||
Reference in New Issue
Block a user