MqttClient resubscribe on reconnect

This commit is contained in:
hsaturn
2021-03-27 01:55:03 +01:00
parent 972759237c
commit 0b1a932244

View File

@@ -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: