Releases: dotnet/MQTTnet
Releases · dotnet/MQTTnet
v2.8.0
** MQTTnet is now available at Open Collective for donations (https://opencollective.com/mqttnet). **
- [Core] Performance optimizations.
- [Core] Due to performance reasons the timestamp of log messages is now in UTC format.
- [Core] Added several packet validations.
- [Core] Log messages now contain the complete source path including parent components.
- [Core] The adapter now has an Endpoint definition as string containing remote IP and port.
- [Client] Received messages are now processed completely in the worker thread without creating new Tasks.
- [Client] Fixed wrong calculation for sending keep alive packets (thanks to @cstichlberger)
- [Client] A clean disconnect (via DisconnectAsync) will no longer throw an exception.
- [Client] Added new overloads for quick message publishing.
- [ManagedClient] The managed client is moved to a separate nuget package.
- [ManagedClient] Added an own message format with extended properties like ID (BREAKING CHANGE).
- [ManagedClient] Fixed a loading issue of stored application messages (thanks to @JTrotta).
- [ManagedClient] Added a new event which is fired when a synchronization of the subscriptions has failed.
- [ManagedClient] Added a new event which is fired when a connection attempt has failed.
- [ManagedClient] Exposed a new property which provides the count of not published messages (pending messages count).
- [Server] Added support for other WebSocket sub protocol formats like mqttv-3.1.1 (thanks to @israellot).
- [Server] The takeover of an existing client sessions is now treated as a clean disconnect of the previous client.
- [Server] The pending messages queue per client is now limited to 250 messages. Overflow strategy and count can be changed via options (thanks to @VladimirAkopyan)
- [Server] Keep alive checking is now suspended while large packages are being received (and thus the client is connected). Keep alive checking continues after a large packet is received completely.
- [Server] Rewritten the ConnectedClients API and added new features for disconnecting and Endpoint information (IP etc.).
- [Server] Added settings for disabling persistent sessions and defining a max pending messages queue size per session.
- [Server] Persistent sessions are disabled by default (BREAKING CHANGE!).
- [Server] Added a new interceptor which is invoked before a new message is added to the client queue.
- [Server] Added support for Linux servers by dividing IPv4 and IPv6 support and adding new options (BREAKING CHANGE!).
- [Server] Gracefully closed connections are no longer reported as warnings.
- [Server] Added new overloads for initializing the ASP.NET Core integration.
v2.7.5
- [Client] Fixed a deadlock while the client disconnects.
- [Client] Fixed broken support for protocol version 3.1.0.
- [Server] The MqttTcpServerAdapter is now added to the ASP.NET services.
- [Server] MqttServerAdapter is renamed to MqttTcpServerAdapter (BREAKING CHANGE!).
- [Server] The server no longer sends the will message of a client if the disconnect was clean (via Disconnect packet).
- [Server] The application message interceptor now allows closing the connection.
- [Server] Added a new flag for the ClientDisconnected event which contains a value indicating whether the disconnect was clean (via Disconnect packet).
v2.7.4
- [Client] Fixed a deadlock while the client disconnects.
- [Client] Fixed broken support for protocol version 3.1.0.
- [Server] The MqttTcpServerAdapter is now added to the ASP.NET services.
- [Server] MqttServerAdapter is renamed to MqttTcpServerAdapter (BREAKING CHANGE!).
- [Server] The server no longer sends the will message of a client if the disconnect was clean (via Disconnect packet).
- [Server] The application message interceptor now allows closing the connection.
- [Server] Added a new flag for the ClientDisconnected event which contains a value indicating whether the disconnect was clean (via Disconnect packet).
v2.7.3
- [Core] Add several new extension methods.
- [Client] Fixed an issue in ManagedMqttClientOptionsBuilder when using WithClientOptions and an options builder.
- [Client] Added the "IsStarted" property for the managed client.
- [Client] Optimized stream buffer for UWP apps.
- [Client] Added the BufferSize to the TCP options.
- [Client] Fixed a race condition which leads to exceptions when reconnecting rapidly.
- [Server] Fixed a race condition which leads to exceptions when clients are reconnecting rapidly.
- [Core] Fixed some issues in stream and socket handling.
v2.7.2
- [Client] Added the subprotocol "mqtt" as default for web socket based connections.
- [Client] Added a new client setting called "KeepAliveSendInterval". It allows configuring the effective interval for sending ping requests.
- [Client] The client will no longer send ping requests if other packets are sent within the configured interval.
- [Server] The server now generates a valid packet identifier when disaptching publish packets to clients.
- [Core] Add several new extension methods.
v2.7.1
- [Core] Fixed wrong parsing of ConnAck packet for protocol version 3.1.0.
- [Core] Log messages are now overriding ToString() and providing a ready to use text representation.
- [Client] Optimized package dispatcher and added several new exceptions.
- [Client] The ManagedClient now has an event which is fired after a queued application message was processed (including exception).
- [Client] The ManagedClient now supports unsubscribing (thanks to @lerppana)
- [Server] Fixed some minor async issues.
- [Server] Fixed wrong comparison of the topic and QoS for retained messages.
- [Server] Added a property which provides access to the used options (read only).
- [Server] Fixed a null ref expection when using an interceptor and publishing via the server directly.
v2.7.0
- [Core] Fixed some still thread blocking parts in the code (thanks to @kpreisser).
- [Core] Updated 3rd-Party packages.
- [Core] Fixed wrong packet identifier calculation (thanks to @benpittoors).
- [Core] Fixed an issue when reading the body of a package from a disconnected sender (thanks to @kpreisser).
- [Core] Fixed wrong parsing of the body length (thanks to @kpreisser).
- [Client] The client interfaces are now implementing IDisposable.
- [Client] The disconnected event now contains the exception which was thrown and causing the disconnect.
- [Server] Fixed an issue which lets the server block 1 second after accepting a new connection (thanks to @kpreisser).
- [Server] The server now allows managing client subscriptions.
- [Server] Added events for topic subscriptions.
v2.6.0
- [Core] Merged projects (BREAKING CHANGE! But only namespace changes).
- [Core] Added a strong name for the assembly.
- [Core] Performance optimizations.
- [Core] Fixed a logging issue when dealing with IOExceptions.
- [Core] Fixed a typo in the global logger class (BREAKING CHANGE! Please find new example in Wiki).
- [Core] Added support for project compilation under macOS (Thanks to @FourOnes).
- [Client] The certificate for encryption is now loaded as a X509Certificate2 which prodives more data (Thanks to @cvellan).
- [Client] Fixed an issue in ManagedClient which can cause the client to stop when publishing subscriptions.
- [Client] Fixed an issue in ManagedClient which prevents changing the QoS of an existing subscription (BREAKING CHANGE!).
- [Client] Fixed an issue in MqttClientOptionsBuilder which prevents adding TLS options to the client options when calling Build(). (Thanks to @cvellan).
- [Client] Added an overload for subscribing at both clients which reduces required code.
- [Client] Added the ClientId to the application message interceptor context.
- [Server] The application message interceptor can now delete any received application message.
- [Server] Added a ConnectionValidator context to align with other APIs (BREAKING CHANGE! Please find new example in Wiki).
- [Server] Added an interface for the MqttServerOptions.
- [Server] Added packet statistics for the connected clients.
- [Server] Fixed a security issue which sends retained packages to a failed subscription.
- [Server] Fixed the response (MaximumQoS) of a subscription (Thanks to @redbeans2017).
- [Server] The keep alive timeouts are now checked for every client (Thanks to @RainerMueller82).
- [Server] The used IP addresses can be specified now (IPAddress.Any as default).