Location>code7788 >text

NET Open Source High Performance MQTT Class Library

Popularity:319 ℃/2024-09-27 11:21:59

preamble

With the rapid development of Internet of Things (IoT) technology, the MQTT (Message Queuing Telemetry Transport) protocol has become the communication standard of choice for many IoT applications due to its lightweight and efficiency.

MQTTnet, a high-performance .NET open source library, provides powerful support for MQTT client and server development on the .

In this article, we will provide a comprehensive introduction to MQTTnet's core features, significant advantages and its wide range of application scenarios to help us better utilize the tool to improve the efficiency and reliability of IoT projects.

Projects

MQTTnet is a cross-platform, high-performance and open source MQTT client library and server implementation, one of the mainstream MQTT implementations on the .

Based on MQTTnet, users can easily integrate MQTT functionality on the .NET platform to realize the MQTT protocol messaging and other functions.

It supports .NET Standard 2.0 and above and runs on multiple versions of the .NET platform, including .NET Framework, .NET Core and Xamarin.

MQTTnet provides synchronous and asynchronous operations, built-in logging, QoS support, and includes both client and server components that support versions of the MQTT protocol from 3.1.1 to 5.0.

Functional Description

Client Functions

MQTTnet provides powerful client-side functionality to easily connect and communicate with MQTT servers.

Its key features include:

  • Connection Management: Support for establishing and managing connections to single or multiple servers.

  • Message posting and subscription: Supports publishing and subscribing of messages with different QoS levels to ensure reliable delivery.

  • Stay active: Automatically manages heartbeats to keep connections active.

  • Reconnection mechanism: Automatic reconnection to ensure communication stability.

Server Features

MQTTnet also supports building MQTT servers to create custom MQTT services.

Its key features include:

  • Connection Management: Supports a large number of concurrent connections.

  • Message Routing: Route messages to the appropriate clients based on subscription rules.

  • Security mechanisms: Supports multiple authentication and authorization mechanisms.

  • Logging and Monitoring: Provides logging and monitoring functions for easy problem troubleshooting.

Functional Features

1, client and server support: MQTTnet provides both client and server implementations to facilitate the construction of a complete MQTT communication system.

2, high performance: asynchronous programming model to ensure efficient message processing and transmission.

3, cross-platform compatibility: compatible with multiple versions of the .NET Framework, including .NET Core and .NET 5/6/7, support for different operating systems and CPU architectures. Easy to use: Provides a simple API for developers to integrate MQTT functionality.

4、Support MQTT v5: Supports the latest version 5 of MQTT and all its features.

5, scalability: flexible design, allowing customization and expansion of functions.

6、Security: Support SSL/TLS encryption to ensure communication security.

7, lightweight: small size, suitable for resource-constrained IoT devices.

application scenario

MQTTnet can be used to build a variety of applications based on the MQTT protocol, including:

  • Internet of Things (IoT): For connecting resource-constrained devices such as sensors and actuators.
  • Telematics: Used to connect in-vehicle devices and collect real-time data.
  • Industrial Automation: Used to connect industrial control systems and equipment.

Usage

1. Install MQTTnet

The MQTTnet library needs to be added to the project and installed using the NuGet package manager:

Install-Package MQTTnet

Or use the .NET CLI

dotnet add package MQTTnet

2、Service-side code

Server-side code is written, the specific steps can refer to the following steps.

  • 1、Initialize MQTT server

Create an instance of the MQTT server factory and use it to create a server.

using ;
var factory = new MqttFactory();
var mqttServer = ();
  • 2. Configure MQTT server options

Configure server options, such as default ports, etc.

var options = new MqttServerOptionsBuilder()
    .WithDefaultEndpointPort(1883)
    .Build();
  • 3. Start the MQTT server
await (options
  • 4、Processing client connections

Add handlers for the server's ClientConnectedHandler and ClientDisconnectedHandler events to handle client connections and disconnections.

 = new MqttServerClientConnectedHandlerDelegate(e =>
{
    ($"Client Connected: {}");
});

 = new MqttServerClientDisconnectedHandlerDelegate(e =>
{
    ($"Client disconnected: {}");
});
  • 5. Handling messages

Adds a handler to the server's ApplicationMessageReceivedHandler event for incoming messages.

 = new MqttApplicationMessageReceivedHandlerDelegate(e =>
{
    ($"receive a message: {Encoding.()} from client: {}");
});
  • 6. Stop the MQTT server

After completing the communication message, you need to stop the server.

await ();

3. Client code

To create an MQTT client using MQTTnet, refer to the following code.

  • 1、Initialize MQTT client

Create an instance of the MQTT client factory and use it to create a client.

using MQTTnet;
using ;
using ;

var factory = new MqttFactory();
var mqttClient = ();
  • 2. Configure MQTT client options

Configure client connection options, such as server address and port.

var options = new MqttClientOptionsBuilder()
    .WithClientId("Client ID")
    .WithTcpServer("mqtt server address", 1883)
    .WithCleanSession()
    .Build();
  • 3. Connect to the MQTT server

Connect to the MQTT server using the configured options.

await (options, );
  • 4、Subscribe to the theme

After a successful connection, you can subscribe to one or more topics.

await (new MqttTopicFilterBuilder()
    .WithTopic("test/topic")
    .Build());
  • 5、Receive messages

Adds a handler to the client's ApplicationMessageReceivedHandler event to receive messages:

(e =>
{
    ($"Receive message: {Encoding.()}");
});
  • 6、Publishing messages

Messages can be posted to specific topics.

var message = new MqttApplicationMessageBuilder()
    .WithTopic("test/topic")
    .WithPayload("Hello MQTT")
    .WithQualityOfServiceLevel()
    .Build();

await (message, );
  • 7. Disconnect

Disconnect from the server when you have finished sending messages.

await ();

With the above steps, we have implemented the basic publish and subscribe functionality: the publisher publishes a message to the "test/Topic" topic, and the subscriber subscribes to the same topic and prints out new messages as they are received.

Although this is a simple example, but in the actual project, you can further extend the functionality according to specific needs, such as adding exception handling.

Project Address

Github: /dotnet/MQTTnet

Official website:/

summarize

This article provides information about MQTT and shows how to make basic use of it in .

There are many more advanced features in MQTT, and you can learn more about them and use them by consulting the official MQTTnet API documentation.

ultimate

If you found this article helpful, why not support it with a like? Your support is what keeps me motivated to continue sharing my knowledge. Feel free to leave a comment if you have any questions or need further help.

You can also join WeChat[DotNet Technician] community to share ideas and grow with other tech-loving peers!Excellence is a habit, so feel free to leave a comment and learn!