static void Main(string[] args) { var client = new MqttClient("localhost"); client.MqttMsgPublishReceived += (s, m) => { Console.WriteLine($"Publish Recieved: {m.Topic} \t {Encoding.ASCII.GetString(m.Message)}"); }; client.MqttMsgPublished += (s, m) => { Console.WriteLine("Message Published"); }; client.ConnectionClosed += (s, m) => { Console.WriteLine("Connection Closed"); }; client.MqttMsgSubscribed += (s, m) => { Console.WriteLine("Message Subscribed"); }; client.MqttMsgUnsubscribed += (s, m) => { Console.WriteLine("Message Unsubscribed"); }; client.Reconnected += (s, m) => { Console.WriteLine("Reconnected"); }; client.Connected += (s, m) => { Console.WriteLine("Connected"); }; client.Connected += (s, m) => { Console.WriteLine("I am a fruitcake"); }; client.Disconnected += (s, m) => { Console.WriteLine("Disconnected"); }; client.Event += (s, m) => { var t = "{\r\n"; var q = m.Dict.Select((a) => $"\t\"{a.Key}\" : \"{a.Value}\""); t += String.Join(",\r\n", q); t += "\r\n}"; Console.WriteLine(t); }; //client.shouldReconnect = false; client.Connect(); Console.ReadKey(); Console.WriteLine("Begin attempt publish"); var do_the_thing = true; new Thread(() => { while (do_the_thing) { client.Publish("/banana", Encoding.ASCII.GetBytes("I am a fish")); Thread.Sleep(1000); } }).Start(); Console.ReadKey(); Console.WriteLine("subscribe to banana"); client.AddTopic(new Topic("/banana")); Console.ReadKey(); Console.WriteLine("subscribe to fig"); client.AddTopic(new Topic("/fig")); Console.ReadKey(); Console.WriteLine("unsubscribe from fig"); client.RemoveTopic("/fig"); Console.ReadKey(); do_the_thing = false; client.Disconnect(); }