From b38df9eecd1bc6416816664e6388baa406112dcf Mon Sep 17 00:00:00 2001 From: Christoph Stichlberger Date: Mon, 4 Jun 2018 16:00:03 +0200 Subject: [PATCH] Respect keep alive interval after sending --- Frameworks/MQTTnet.NetStandard/Client/MqttClient.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Frameworks/MQTTnet.NetStandard/Client/MqttClient.cs b/Frameworks/MQTTnet.NetStandard/Client/MqttClient.cs index 90790d5a..ae8442ee 100644 --- a/Frameworks/MQTTnet.NetStandard/Client/MqttClient.cs +++ b/Frameworks/MQTTnet.NetStandard/Client/MqttClient.cs @@ -419,12 +419,14 @@ namespace MQTTnet.Client keepAliveSendInterval = _options.KeepAliveSendInterval.Value; } - if (_sendTracker.Elapsed > keepAliveSendInterval) + var waitTime = keepAliveSendInterval - _sendTracker.Elapsed; + if (waitTime <= TimeSpan.Zero) { await SendAndReceiveAsync(new MqttPingReqPacket()).ConfigureAwait(false); + waitTime = keepAliveSendInterval; } - await Task.Delay(keepAliveSendInterval, _cancellationTokenSource.Token).ConfigureAwait(false); + await Task.Delay(waitTime, _cancellationTokenSource.Token).ConfigureAwait(false); } } catch (Exception exception)