MQTTnet

MQTTnet is a high performance .NET library for MQTT based communication. It provides a MQTT client and a MQTT server (broker). The implementation is based on the documentation from http://mqtt.org/.

MIT License

Stars
4.4K
Committers
124

Bot releases are visible (Hide)

MQTTnet - v3.1.1

Published by chkr1011 almost 3 years ago

  • [Core] Removed IDisposable from MqttClientConnection.cs (#1284).
  • [Core] Improved message of timeout exception (#1302, thanks to @patagonaa).
  • [RpcClient] Filling response topic when using MQTTv5. (#1295, thanks to @MD-V).
  • [Server] Fixed 'SessionIsPresent' handling for MQTTv5 (#1300, thanks to @logicaloud).
  • [Server] Improved session management for MQTTv5 (#1294, thanks to @logicaloud).
MQTTnet - v3.1.0

Published by chkr1011 almost 3 years ago

  • [Core] Added all builders to the MQTT factory.
  • [Core] Removed global logger and refactored logging (BREAKING CHANGE!).
  • [Client] Renamed MqttClientAuthenticateResult to MqttClientConnectResult (BREAKING CHANGE!).
  • [ManagedClient] Extended ReconnectAsync (thanks to @nvsnkv, #1202).
  • [ManagedClient] Improved Amazon AWS support (thanks to @scottbrogden-iheartmedia, #1209).
  • [ManagedClient] Fixed bug that allowed invalid subscriptions (Thanks to @marcelwinh).
  • [Server] Added support for RetainHandling (MQTTv5, BREAKING CHANGE!).
  • [Server] Added support for NoLocal (MQTTv5, BREAKING CHANGE!).
  • [Server] Added support for SubscriptionIdentifier (MQTTv5, BREAKING CHANGE!).
  • [Server] Server now reports supported features properly after successful connection (MQTTv5, BREAKING CHANGE!).
  • [Server] Fixed a memory/performance leak when using QoS Level 1.
  • [Server] Exposed connection timestamp in client status.
  • [Server] Refactored connection management code.
  • [Server] Exposed more details in MqttServerClientConnectedEventArgs.
  • [Server] Processing all pending messages before stopping (thanks to @AblEdge, #1234).
  • [Server] Added support for a custom exception handler in MqttServerMultiThreadedApplicationMessageInterceptorDelegate.
  • [Server] Removed logger from MqttServerMultiThreadedApplicationMessageInterceptorDelegate (BREAKING CHANGE!).
  • [Server] Fixed a memory leak when deleting sessions.
  • [Server] Fixed timestamp check in server keep-alive monitor (thanks to @logicaloud, #1277).
  • [MQTTnet.Server] Moved server project to a dedicated GitHub repository.

This version was released as 3.0.17 before which is wrong!

MQTTnet - v3.0.16

Published by chkr1011 over 3 years ago

  • [Core] Fixed DISCONNECT packet reading for protocol version 3.1.0.DisconnectPacket
  • [Client] Added support for deferred message approval (#1075, thanks to @tkurucsai).
  • [Client] Exposed missing APIs for .NET 5.0 build (thanks to @yyjdelete).
  • [Client] Improved disconnect handling (#1134, thanks to @yyjdelete).
  • [Client] Fix TLS parameter options builder (#1104).
  • [Server] Add new overload for options builder.
  • [Server] Exposed endpoint in MqttServerClientDisconnectedEventArgs.
  • [Server] Remove client disconnected handler from wrong implementation location (BREAKING CHANGE).
MQTTnet - v3.0.15

Published by chkr1011 over 3 years ago

  • [Core] Fixed some issues in nuget packages.
  • [Client] Changed exception types so that proper exceptions are thrown when connecting (#1082).
  • [Client] Exposed Dup flag in application messages.
  • [Client] Improved keep alive message sending.
  • [RpcClient] Fixed an issue when using a custom application message reveived handler (#1093).
  • [RpcClient] Fixed a race condition when using timeout and cancellation token at the same time (BREAKING CHANGE!).
  • [Server] Improved keep alive message sending.
MQTTnet - v3.0.14

Published by chkr1011 over 3 years ago

  • [Core] Added .NET 5.0 TFMs (thanks to @StefanOssendorf, @JanEggers).
  • [Core] Added support for TLS 1.3 (requires .NET Core 3.1+) (thanks to @Dvergatal).
  • [Core] Added support for MaximumQoS transmit when using MQTTv5 (thanks to @nayato).
  • [Core] Aligned the format of some log messages.
  • [Client] Fixed an issue with connection state detection (thanks to @tobiasfrick).
  • [Client] Fixed an issue when receiving partial QoS 2 packets after a reconnect.
  • [Client] Added new API for raw packet inspection.
  • [ManagedClient] Removed AutoReconnect since this does no longer work (BREAKING CHANGE!).
  • [RpcClient] Moved the RPC topic validation to the topic generation strategy.
  • [RcpClient] Added interface for MqttRpcClient.
  • [Server] Reduced async tasks count by moving dedicated keep alive tasks per connection to shared one.
  • [Server] Session takeover and keep alive timeout are now properly set in DISCONNECT packet.
  • [Server] Fixed bug in PubRel packet generation (MQTTv5 only).
  • [Server] Improved message processing performance (+ ~5%).
  • [Server] Fix wrong usage of client session items for undelivered messages.
  • [Server] Allow to respond with a reason code in PUBACK/PUBREC (thanks to @muneebmajeed).
  • [Server] Fixed topic filter comparer on edge cases, e.g. "foo/" matching "foo/#" (thanks to @dagophil).
  • [Core] Added code documentation.
MQTTnet - v3.0.13

Published by chkr1011 almost 4 years ago

  • [Client] Fixed wrong value for "ClientWasConnected" in "MqttClientDisconnectedEventArgs" #976 (thanks to @dbeinder).
  • [Client] Added direct support for Amazon AWS connections (requires .NET Core 3.1) (thanks to @henning-krause).
  • [Client] handle disconnect package and propagate disconnect reason code (thanks to @JanEggers)
  • [ManagedClient] Exposed the internal MQTT client.
  • [Server] Added client message queue interceptor for QoS level (thanks to @msallin).
  • [Server] improved behavior when multiple connections fight over a session (thanks to @JanEggers)
  • [Server] Exposed ClientDisconnectedInterceptor (thanks to @SeppPenner).
MQTTnet - v3.0.12

Published by chkr1011 about 4 years ago

  • [LowLevelClient] Fixed a null reference exception when connecting to a not existing server (thanks to @SGStino).
  • [RcpClient] Adjusted some namespaces (BREAKING CHANGE!).
  • [AspNetCore] Adjusted some namespaces (BREAKING CHANGE!).
  • [Server] Adjusted some namespaces (BREAKING CHANGE!).
  • [Server] Added state checks (throw if not started etc.) for most server APIs.
  • [Server] Exposed real X509Certificate2 (instead byte array) to TLS options (thanks to @borigas).
  • [Server] Fixed memory leak with TCP sockets (MqttServer is now Disposable!) (BREAKING CHANGE!).
  • [Core] Fixed a null reference exception in the MqttTcpChannel with WriteAsync and ReadAsync.
  • [Core] Added server interceptor for undelivered messages (thanks to @cshark-inator).
  • [nuget] Added support for SourceLink (thanks to @JTOne123).
MQTTnet - v3.0.11

Published by chkr1011 over 4 years ago

  • [Client] Fixed issue in keep alive handling.
  • [MQTTnet.Server] Added support for delivering static files (HTML, JavaScript etc.).
  • [MQTTnet.Server] Fixed web socket protocol errors (when using paho JS etc.).
MQTTnet - v3.0.10

Published by chkr1011 over 4 years ago

  • [Core] Improved logger performance (BREAKING CHANGE!).
  • [Core] Renamed some topic filter relevant classes (BREAKING CHANGE!).
  • [Core] Improved task management for UWP connections (thanks to @xgstation).
  • [Core] Fixed broken logger which decreases overall performance.
  • [Core] Fixed issue in closed socket detection (fixes high CPU load issue).
  • [Client] Added method to trigger PING/PONG manually (connection check etc.).
  • [Client] Added support for certificate validation callback when using Web Sockets (requires netstandard2.1+).
  • [Client] Fixed a memory leak when web socket based connections trying to reconnect with an offline server.
  • [Client] Fixed a memory leak when TCP based connections trying to reconnect with an offline server.
  • [Client] Fixed an issue when connecting to an invalid host (format).
  • [Client] Added support for user properties in CONNECT packet.
  • [Client] Removed KeepAliveSendInterval and improved keep alive handling (BREAKING CHANGE!).
  • [ManagedClient] Added method to trigger PING/PONG manually (connection check etc.).
  • [MQTTnet.AspNetCore] improved compatibility with AspNetCore 3.1.
  • [MQTTnet.AspNetCore] Fixed several packaging issues with the Nuget package.
  • [MQTTnet.Server] Fixed wrong version output.
MQTTnet - v3.0.9

Published by chkr1011 over 4 years ago

  • [All] Due to a merge issue not all changes are included in 3.0.8. All these changes are now included in this version.
  • [Core] Updated all nuget references.
  • [Core] Added MqttApplicationMessage.GetUserProperty() convenience method (thanks to @PMExtra).
  • [LowLevelMqttClient] Added low level MQTT client in order to provide more flexibility when using the MQTT protocol. This client requires detailed knowledge about the MQTT protocol.
  • [Client] Improve connection stability (thanks to @jltjohanlindqvist).
  • [Client] Support WithConnectionUri to configure client (thanks to @PMExtra).
  • [Client] Support PublishAsync with QoS 1 and QoS 2 from within an ApplicationMessageReceivedHandler (#648, #587, thanks to @PSanetra).
  • [Client] Fixed MqttCommunicationTimedOutExceptions, caused by a long running ApplicationMessageReceivedHandler, which blocked MQTT packets from being processed (#829, thanks to @PSanetra).
  • [ManagedClient] Added builder class for MqttClientUnsubscribeOptions (thanks to @dominikviererbe).
  • [ManagedClient] Added support for persisted sessions (thansk to @PMExtra).
  • [ManagedClient] Fixed a memory leak (thanks to @zawodskoj).
  • [ManagedClient] Improved internal subscription management (#569, thanks to @cstichlberger).
  • [ManagedClient] Refactored log messages (thanks to @cstichlberger).
  • [Server] Added support for assigned client IDs (MQTTv5 only) (thanks to @bcrosnier).
  • [Server] Added interceptor for unsubscriptions.
  • [Server] Removed exceptions when user properties are set with MQTT protocol version 3.1
  • [Server] Added custom session items to the client status.
  • [Server] Added option to check whether the server is already started properly or not.
  • [MQTTnet.AspNetCore] improved compatibility with AspNetCore 3.1
  • [MQTTnet.Server] Added interceptor for unsubscriptions.
MQTTnet - v3.0.8

Published by chkr1011 almost 5 years ago

  • [Core] Converted all pending methods to use async/await.
  • [Core] Fixed an issue when serializing a PubRec (QoS 2) packet for MQTTv5.
  • [Client] Fixed an issue when checking for revoked SSL certificates (thanks to @cslutgen).
  • [RpcClient] Added support for custom topic generation strategies.
  • [Server] Refactoring of server certificate password classes (BREAKING CHANGE!).
  • [Server] Fixed an issue with empty server certificate passwords (thanks to @SeppPenner).
  • [MQTTnet.Server] Added support for certificate passwords (BREAKING CHANGE IN CONFIG!)
  • [MQTTnet.AspNetCore] Fixed an issue with MQTTv5 package serialization (#743, thanks to @JanEggers, @pcbing).
MQTTnet - v3.0.7

Published by chkr1011 about 5 years ago

  • [Core] Converted all pending methods to use async/await.
  • [Core] Fixed an issue when serializing a PubRec (QoS 2) packet for MQTTv5.
  • [Client] Fixed an issue when checking for revoked SSL certificates (thanks to @cslutgen).
  • [RpcClient] Added support for custom topic generation strategies.
  • [Server] Refactoring of server certificate password classes (BREAKING CHANGE!).
  • [Server] Fixed an issue with empty server certificate passwords (thanks to @SeppPenner).
  • [MQTTnet.Server] Added support for certificate passwords (BREAKING CHANGE IN CONFIG!)
  • [MQTTnet.AspNetCore] Fixed an issue with MQTTv5 package serialization (#743, thanks to @JanEggers, @pcbing).
MQTTnet - v3.0.6

Published by chkr1011 about 5 years ago

  • [Core] Nuget packages with symbols are now also published to improve debugging.
  • [Core] Improve task handling (thanks to @mwinterb)
  • [ManagedClient] Fix a race condition in the message storage (thanks to @PaulFake).
  • [Server] Added items dictionary to client session in order to share data across interceptors as along as the session exists.
  • [Server] Exposed CONNECT packet properties in Application Message and Subscription interceptor.
  • [Server] Fixed: Sending Large packets with AspnetCore based connection throws System.ArgumentException.
  • [Server] Fixed wrong usage of socket option NoDelay.
  • [Server] Added remote certificate validation callback (thanks to @rudacs).
  • [Server] Add support for certificate passwords (thanks to @cslutgen).
  • [MQTTnet.Server] Added REST API for publishing basic messages.
MQTTnet - v3.0.5

Published by chkr1011 over 5 years ago

  • [Server] Moved new socket options to TCP options to avoid incompatibility with Linux hosts.
MQTTnet - v3.0.4

Published by chkr1011 over 5 years ago

  • [Core] Fixed wrong versions in nuget packages.
  • [Server] The TCP address is now reused when starting which should prevent "port in used" error when restarting.
MQTTnet - v3.0.3

Published by chkr1011 over 5 years ago

  • [Core] Fixed issues in MQTTv5 message encoding and decoding.
  • [Core] Added extension method to allow usage of WebSocket4Net in clients to fix issues with AWS and Xamarin.
  • [Core] Fixed usage of wrong data type for passwords (string -> byte[]).
  • [Core] Fixed an ObjectDisposedException when sending data using a WebSocket channel.
  • [Core] Performance optimizations.
  • [Client] Added support for extended authentication exchange.
  • [Client] Exposed MQTTv5 CONNACK values to client.
  • [Client] Added MqttClientSubscribeOptionsBuilder.
  • [Client] The disconnected handler is now executed in a new task to prevent deadlocks when reconnecting etc. (thanks to @lizziebeans).
  • [Client] Converted option DualMode into nullable boolean to preserve original value and avoid exceptions in IPv4 only networks (thanks to @lavaflo).
  • [Server] Exposed ClientCertificateRequired and CheckCertificateRevocation at TLS options.
  • [Server] Exposed client certificate at client connection validator.
  • [Server] The subscription interceptor now supports altering the entire topic filter.
  • [Server] Exposed more properties to the connection validator context.
  • [MQTTnet.Server] Added authentication support via Python script file.
  • [MQTTnet.Server] Migrated the result of connection validations to ReasonCode (MQTTv5) instead of ReturnCode (MQTTv3 only) (BREAKING CHANGE!).
MQTTnet - v3.0.3-rc3

Published by chkr1011 over 5 years ago

  • [Core] Fixed issues in MQTTv5 message encoding and decoding.
  • [Core] Added extension method to allow usage of WebSocket4Net in clients to fix issues with AWS and Xamarin.
  • [Core] Fixed usage of wrong data type for passwords (string -> byte[]).
  • [Core] Fixed an ObjectDisposedException when sending data using a WebSocket channel.
  • [Client] Added support for extended authentication exchange.
  • [Client] Exposed MQTTv5 CONNACK values to client.
  • [Client] Added MqttClientSubscribeOptionsBuilder.
  • [Client] The disconnected handler is now executed in a new task to prevent deadlocks when reconnecting etc. (thanks to @lizziebeans).
  • [Client] Converted option DualMode into nullable boolean to preserve original value and avoid exceptions in IPv4 only networks (thanks to @lavaflo).
  • [Server] Exposed ClientCertificateRequired and CheckCertificateRevocation at TLS options.
  • [Server] Exposed client certificate at client connection validator.
  • [Server] The subscription interceptor now supports altering the entire topic filter.
  • [Server] Exposed more properties to the connection validator context.
  • [MQTTnet.Server] Added authentication support via Python script file.
  • [MQTTnet.Server] Migrated the result of connection validations to ReasonCode (MQTTv5) instead of ReturnCode (MQTTv3 only) (BREAKING CHANGE!).
MQTTnet - v3.0.2

Published by chkr1011 over 5 years ago

  • [Core] Fixed issues in MQTTv5 message encoding and decoding.
MQTTnet - v3.0.1

Published by chkr1011 over 5 years ago

  • [Core] Fixed missing properties from PUBLISH packet in MqttApplicationMessage (thanks to @pcbing).
  • [Core] Fixed wrong encoding of PUBREL and PUBCOMP packets for MQTTv5 (thanks to @perphilipp).
  • [Client] Added the authentication result to the disconnected handler (only set when connecting failed).
  • [Client] Added new overloads for MqttClientOptionsBuilder.
  • [Server] Fixed a bug which returns wrong flag for existing session in CONNACK packet (thanks to @avengerstark).
  • [nuget] .NET Framework builds are now using 4.5.2 or 4.6.1 builds instead of netstandard 2.0.
MQTTnet - v3.0.0

Published by chkr1011 over 5 years ago

  • [Core] Added support for MQTTv5 packages.

  • [Core] Performance improvements.

  • [Core] Removed obsolete methods.

  • [Core] Fixed a memory leak when processing lots of messages (thanks to @tschanko)

  • [Core] Added more overloads for MQTT factory.

  • [Core] The client password is now hidden from the logs (replaced with **** if set).

  • [Core] Fixed a memory leak when using SSL connections (thanks to @biovoid).

  • [Client] Added validation of topics before publishing.

  • [Client] Added new MQTTv5 features to options builder.

  • [Client] Added uniform API across all supported MQTT versions (BREAKING CHANGE!)

  • [Client] The client will now avoid sending an ACK if an exception has been thrown in message handler (thanks to @ramonsmits).

  • [Client] Fixed issues in QoS 2 handling which leads to message loss.

  • [Client] Replaced all events with proper async compatible handlers (BREAKING CHANGE!).

  • [Client] Added more configuration values to TCP endpoint options.

  • [Client] Added used PacketIdentifier to publish result.

  • [ManagedClient] Replaced all events with proper async compatible handlers (BREAKING CHANGE!).

  • [ManagedClient] The log ID is now propagated to the internal client (thanks to @vbBerni).

  • [ManagedClient] Added validation of topics before publishing.

  • [ManagedClient] The internal MQTT client is now closed properly (thanks to @vbBerni).

  • [Server] Added support for MQTTv5 clients. The server will still return success for all cases at the moment even if more granular codes are available.

  • [Server] Fixed issues in QoS 2 handling which leads to message loss.

  • [Server] Replaced all events with proper async compatible handlers (BREAKING CHANGE!).

  • [Server] The used logger instance is now propagated to the WebSocket server adapter.

  • [Server] Added the flag "IsSecureConnection" which is set to true when the connection is encrypted.

  • [Server] Fixed wrong will message behavior when stopping server (thanks to @JohBa)

  • [Server] Added validation of topics before publishing.

  • [Server] Added more configuration values to TCP endpoint options.

  • [MQTTnet Server] Added as first Alpha version of standalone cross platform MQTT server.

  • [Note] Due to MQTTv5 a lot of new classes were introduced. This required adding new namespaces as well. Most classes are backward compatible but new namespaces must be added.

Package Rankings
Top 10.05% on Proxy.golang.org
Badges
Extracted from project README
NuGet Badge CI MyGet Join the chat at https://gitter.im/MQTTnet/community License: MIT
Related Projects