MQTT的使用
客户端重连机制
public static void Reconnect_Using_Timer() { /* * This sample shows how to reconnect when the connection was dropped. * This approach uses a custom Task/Thread which will monitor the connection status. * This is the recommended way but requires more custom code! */ var mqttFactory = new MqttFactory(); using (var mqttClient = mqttFactory.CreateMqttClient()) { var mqttClientOptions = new MqttClientOptionsBuilder().WithTcpServer("broker.hivemq.com").Build(); _ = Task.Run( async () => { // User proper cancellation and no while(true). while (true) { try { // This code will also do the very first connect! So no call to _ConnectAsync_ is required in the first place. if (!await mqttClient.TryPingAsync()) { await mqttClient.ConnectAsync(mqttClientOptions, CancellationToken.None); // Subscribe to topics when session is clean etc. Console.WriteLine("The MQTT client is connected."); } } catch { // Handle the exception properly (logging etc.). } finally { // Check the connection state every 5 seconds and perform a reconnect if required. await Task.Delay(TimeSpan.FromSeconds(5)); } } }); Console.WriteLine("Press <Enter> to exit"); Console.ReadLine(); } }
基本API的使用