commit 3f2f8d4b0a31b20734eca3fff86c43bd1ac3e3ad
Merge: 34babbf2 d71ff3d6
Author: Christian <6939810+chkr1011@users.noreply.github.com>
Date: Sat Jul 23 11:06:22 2022 +0200
Merge branch 'master' into 487-any-way-to-generate-events-on-receipt-of-puback-or-pubrec-packets
commit 34babbf2714b742bc4f3802804a1a07159d38e22
Author: Christian <6939810+chkr1011@users.noreply.github.com>
Date: Mon Jul 11 22:56:01 2022 +0200
Fix typo.
commit add6277458f528fc03bf4a1ba228a55c5a8d1a80
Author: Christian <6939810+chkr1011@users.noreply.github.com>
Date: Sat Jul 2 12:50:13 2022 +0200
Add new event for client acknowledges.
MQTTnet
MQTTnet is a high performance .NET library for MQTT based communication. It provides a MQTT client and a MQTT server (broker) and supports the MQTT protocol up to version 5.
Features
General
- Async support
- TLS support for client and server (but not UWP servers)
- Extensible communication channels (e.g. In-Memory, TCP, TCP+TLS, WS)
- Lightweight (only the low level implementation of MQTT, no overhead)
- Performance optimized (processing ~150.000 messages / second)*
- Uniform API across all supported versions of the MQTT protocol
- Access to internal trace messages
- Unit tested (~636 tests)
- No external dependencies
* Tested on local machine (Intel i7 8700K) with MQTTnet client and server running in the same process using the TCP channel. The app for verification is part of this repository and stored in /Tests/MQTTnet.TestApp.NetCore.
Client
- Communication via TCP (+TLS) or WS (WebSocket) supported
- Included core LowLevelMqttClient with low level functionality
- Also included ManagedMqttClient which maintains the connection and subscriptions automatically. Also application messages are queued and re-scheduled for higher QoS levels automatically.
- Rx support (via another project)
- Compatible with Microsoft Azure IoT Hub
Server (broker)
- List of connected clients available
- Supports connected clients with different protocol versions at the same time
- Able to publish its own messages (no loopback client required)
- Able to receive every message (no loopback client required)
- Extensible client credential validation
- Retained messages are supported including persisting via interface methods (own implementation required)
- WebSockets supported (via ASP.NET Core 2.0, separate nuget)
- A custom message interceptor can be added which allows transforming or extending every received application message
- Validate subscriptions and deny subscribing of certain topics depending on requesting clients
Supported frameworks
| Framwork | Version |
|---|---|
| .NET | 5.0+ |
| .NET Framework | 4.5.2+ |
| .NET Standard | 1.3+ |
| .NET Core | 1.1+ |
| .NET Core App | 1.1+ |
| Mono | 5.2+ |
| UWP | 10.0.10240+ |
| Xamarin.Android | 7.5+ |
| Xamarin.iOS | 10.14+ |
| Blazor WebAssembly | 3.2.0+ |
References
This library is used in the following projects:
- Azure Functions MQTT Bindings, https://github.com/keesschollaart81/CaseOnline.Azure.WebJobs.Extensions.Mqtt)
- HA4IoT (Open Source Home Automation system for .NET, https://github.com/chkr1011/HA4IoT)
- MQTT Client Rx (Wrapper for Reactive Extensions, https://github.com/1iveowl/MQTTClient.rx)
- MQTT Client Rx (Managed Client Wrapper for Reactive Extensions, https://github.com/mmuecke/RxMQTTnet)
- MQTT Tester (MQTT client test app for Android and iOS)
- MQTTnet App (Cross platform client application for MQTT debugging, inspection etc., https://github.com/chkr1011/MQTTnetApp)
- Wirehome.Core (Open Source Home Automation system for .NET Core, https://github.com/chkr1011/Wirehome.Core)
- SparkplugNet (Sparkplug library for .Net, https://github.com/SeppPenner/SparkplugNet)
- Silverback (Framework to build event-driven applications - support for MQTT, Kafka & RabbitMQ) https://github.com/BEagle1984/silverback
Further projects using this project can be found under https://github.com/dotnet/MQTTnet/network/dependents.
If you use this library and want to see your project here please create a pull request.
Code of Conduct
This project has adopted the code of conduct defined by the Contributor Covenant to clarify expected behavior in our community. For more information see the .NET Foundation Code of Conduct.
.NET Foundation
This project is supported by the .NET Foundation.