Hello. Property IsConnected in Mqtt never set to false. When I turn off my MQTT server but, property IsConnected = true;
Try to wait about few second. It will set to false when try to ping and failed. Isn’t it?
not working…
- Run MQTT server
- When IsConnected == true, i send packet “client.publish(…) every one second”
- Shutdown MQTT server after 5 minutes
- IsConnected == true and call function “Send” in library MQTT. In every call “Send” value lastCommunationInMilisecond set to current time (lastCommunationInMilisecond = ToMillisecond(DateTime.Now.Ticks);).
- IsConnected never set to false, because function “PingReq” in library MQTT never call.
var d = ToMillisecond(DateTime.Now.Ticks) - this.lastCommunationInMilisecond;
It will be called depends on KeepAliveTimeout value. Default is 60 seconds.
Below is we tried at 20 seconds.
var connectSetting = new MqttConnectionSetting
{
ClientId = DeviceId,
UserName = Username,
Password = Password,
KeepAliveTimeout = 20,
};
var d = ToMillisecond(DateTime.Now.Ticks) - this.lastCommunationInMilisecond;
d = 980
keepAliveTimeoutInMilisecond = 20000
value this.lastCommunationInMilisecond always update to ToMillisecond(DateTime.Now.Ticks) after call Publish("…");
I call the Publish ("…") function every second, because IsConnected = true
“d” is always less than “this.lastCommunationInMilisecond” and “PingReq” never called.