C# .Net and WinRT Client
M2Mqtt is a MQTT client available for all .Net platforms (.Net Framework, .Net Compact Framework and .Net Micro Framework) and WinRT platforms (Windows 8.1 and Windows Phone 8.1).
Features
Source
https://github.com/eclipse/paho.mqtt.m2mqtt
Download
The M2Mqtt client assemblies for using as references in your Visual Studio projects can be downloaded from here
Building from source
The project can be installed from the repository as well. To do this:
git clone https://github.com/eclipse/paho.mqtt.m2mqtt.git
You can open one of the available solutions for Visual Studio (in the "org.eclipse.paho.mqtt.m2mqtt" folder) depends on .Net or WinRT platform you want to use.
Documentation
Full client documentation is available on the official M2Mqtt project web site here.
Getting Started
Here is a very simple example that shows a publisher and a subscriber for a topic on temperature sensor:
// SUBSCRIBER ... // create client instance MqttClient client = new MqttClient(IPAddress.Parse(MQTT_BROKER_ADDRESS)); // register to message received client.MqttMsgPublishReceived += client_MqttMsgPublishReceived; string clientId = Guid.NewGuid().ToString(); client.Connect(clientId); // subscribe to the topic "/home/temperature" with QoS 2 client.Subscribe(new string[] { "/home/temperature" }, new byte[] { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE }); ... static void client_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e) { // handle message received } // PUBLISHER ... // create client instance MqttClient client = new MqttClient(IPAddress.Parse(MQTT_BROKER_ADDRESS)); string clientId = Guid.NewGuid().ToString(); client.Connect(clientId); string strValue = Convert.ToString(value); // publish a message on "/home/temperature" topic with QoS 2 client.Publish("/home/temperature", Encoding.UTF8.GetBytes(strValue), MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE); ...