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 hidden (Show)

MQTTnet - v4.3.7.1207

Published by chkr1011 about 1 month ago

  • Core: Fixed issue when parsing AUTH packet with 0 length body (#2039).
  • nuget: Changed code signing and nuget certificate (BREAKING CHANGE).
  • TopicTemplates: Updated samples, parameter validation (#2022).
  • ManagedClient: Switch SubscribeAsync/UnsubscribeAsync to IEnumerable (#2026).
  • Server: Fix LoadingRetainedMessageAsync not executed (#2025).
MQTTnet - v4.3.6.1152

Published by chkr1011 5 months ago

  • [Client] Restored Server and Port behavior of client options (#2005).
MQTTnet - v4.3.5.1141

Published by chkr1011 5 months ago

  • [Client] Fix None of the discovered or specified addresses match the socket address family. (#1997).
  • [Client] Remove the obsolete attribute from the WithConnectionUri methods (#1979).
MQTTnet - v4.3.4.1084

Published by chkr1011 5 months ago

  • [Core] Optimized packet serialization of PUBACK and PUBREC packets for protocol version 5.0.0 (#1939, thanks to @Y-Sindo).
  • [Core] The package inspector is now fully async (#1941).
  • [Client] Added a dedicated exception when the client is not connected (#1954, thanks to @marcpiulachs).
  • [Client] The client will now throw a MqttClientUnexpectedDisconnectReceivedException when publishing a QoS 0 message which leads to a server disconnect (BREAKING CHANGE!, #1974, thanks to @fazho).
  • [Client] Exposed the certificate selection event handler in client options (#1984).
  • [Server] The server will no longer send NoMatchingSubscribers when the actual subscription was non success (#1965, BREAKING CHANGE!).
  • [Server] Fixed broken support for null in AddServer method in ASP.NET integration (#1981).
  • [ManagedClient] Added a new event (SubscriptionsChangedAsync) which is fired when a subscription or unsubscription was made (#1894, thanks to @pdufrene).
  • [ManagedClient] Fixed race condition when server shuts down while subscribing (#1987, thanks to @marve).
  • [TopicTemplate] Added new extension which provides a template engine for topics (#1932, thanks to @simonthum).
MQTTnet - v4.3.3.952 Latest Release

Published by chkr1011 11 months ago

  • [Server] Added new events for delivered and dropped messages (#1866, thanks to @kallayj).
  • [Server] The server will no longer treat a client which is receiving a large payload as alive. The packet must be received completely within the keep alive boundaries (BREAKING CHANGE!, #1883).
  • [Server] Fixed "service not registered" exception in ASP.NET integration (#1889).
MQTTnet - v4.3.2.930

Published by chkr1011 11 months ago

  • [Client] Added support for custom CA chain validation (#1851, thanks to @rido-min).
  • [Client] Fixed handling of unobserved tasks exceptions (#1871).
  • [Client] Fixed not specified ReasonCode when using SendExtendedAuthenticationExchangeDataAsync (#1882, thanks to @rido-min).
  • [Server] Fixed not working UpdateRetainedMessageAsync public api (#1858, thanks to @kimdiego2098).
  • [Server] Added support for custom DISCONNECT packets when stopping the server or disconnect a client (BREAKING CHANGE!, #1846).
  • [Server] Added new property to stop the server from accepting new connections even if it is running (#1846).
MQTTnet - v4.3.1.873

Published by chkr1011 about 1 year ago

  • [Client] Fixed wrong TLS options handling (#1830).
  • [Client] Fixed NullReferenceExeption when performing a Ping when the client is not connected (#1831).
MQTTnet - v4.3.0.858

Published by chkr1011 about 1 year ago

  • [Client] Fixed PlatformNotSupportedException when using Blazor (#1755, thanks to @Nickztar).
  • [Client] Added hot reload of client certificates (#1781).
  • [Client] Added several new option builders and aligned usage (#1781, BREAKING CHANGE!).
  • [Client] Added support for RemoteCertificateValidationCallback for .NET 4.5.2, 4.6.1 and 4.8 (#1806, thanks to @troky).
  • [Client] Fixed wrong logging of obsolete feature when connection was not successful (#1801, thanks to @ramonsmits).
  • [Client] Fixed NullReferenceException when performing several actions when not connected (#1800, thanks to @ramonsmits).
  • [RpcClient] Added support for passing custom parameters to topic generation context (#1798, thanks to @Temppus).
  • [Server] Fixed NullReferenceException in retained messages management (#1762, thanks to @logicaloud).
  • [Server] Exposed new option which allows disabling packet fragmentation (#1753).
  • [Server] Expired sessions will no longer be used when a client connects (#1756).
  • [Server] Fixed an issue in connection handling for ASP.NET connections (#1819, thanks to @CZEMacLeod).
MQTTnet - v4.2.1.781

Published by chkr1011 over 1 year ago

  • [Core] Add validation of maximum string lengths (#1718).
  • [Core] Added .NET 4.8 builds (#1729).
  • [Core] Exposed more details of DISCONNECT packet in log (#1729).
  • [Core] Fixed ArgumentNullException in ConvertPayloadToString (#1745, thanks to @ramonsmits).
  • [Client] Added overloads for setting packet payload and will payload (#1720).
  • [Client] The proper connect result is now exposed in the Disconnected event when authentication fails (#1139).
  • [Client] Exposed UseDefaultCredentials and more for Web Socket options and proxy options (#1734, thanks to @impworks).
  • [Client] Exposed more TLS options (#1729).
  • [Client] Fixed wrong return code conversion (#1729).
  • [Client] Added an option to avoid throwing an exception when the server returned a proper non success (but valid) response (#1681).
  • [Server] Improved performance by changing internal locking strategy for subscriptions (#1716, thanks to @zeheng).
  • [Server] Fixed exceptions when clients are connecting and disconnecting very fast while accessing the client status for connection validation (#1742).
  • [Server] Exposed more properties in ClientConnectedEventArgs (#1738).
MQTTnet - 4.2.0.706

Published by chkr1011 over 1 year ago

  • [Core] Added net7.0 builds (#1635, thanks to @YAJeff).
  • [Core] Added support for payload segments (#1585, thanks to @xljiulang)
  • [Client] Added support for passing MQTT v5 options (User properties etc.) for disconnects.
  • [Client] An internal exception is no longer caught silently when calling DisconnectAsync to indicate that the disconnect is not clean (BREAKING CHANGE).
  • [Client] MQTTv5 features are now checked and an exception is thrown if they are used when using protocol version 3.1.1 and lower. These checks can be disabled in client options. (BREAKING CHANGE!).
  • [Client] Added support for disabling packet fragmentation (required for i.e. AWS, #1690, thanks to @logicaloud).
  • [Client] Added new overloads for options builder.
  • [Client] Renamed InspectPackage to InspectPacketAsync (BREAKING CHANGE).
  • [ManagedClient] Exposed added and removed topics in ManagedProcessFailedEventArgs (#1678, thanks to @scottbrogden-iheartmedia).
  • [Server] Exposed MQTT v5 sent properties from the affected client in ClientDisconnectedAsync event.
  • [Server] Fixed wrong client ID passed to InterceptingUnsubscriptionEventArgs (#1631, thanks to @ghord).
  • [Server] Exposed socket settings for TCP keep alive in TCP options (#1544).
  • [Server] Exposed server session items at server level and allow custom session items for injected application messages (#1638).
  • [Server] Improved performance for retained message handling when subscribing using "DoNotSendOnSubscribe" or "SendAtSubscribeIfNewSubscriptionOnly" (#1661, thanks to @Int32Overflow).
  • [Server] Added support for changing the used TLS certificate while the server is running (#1652, thanks to @YAJeff). The certificate provider will now be invoked for every new connection!
  • [Server] Added a new API method which allows reading a single retained message without the need to processing the entire set of retained messages (#1659).
  • [Server] Added a new event (InterceptingClientEnqueueAsync) which allows intercepting when an application message is enqueued for a client (#1648).
  • [Server] Fixed race condition when handling connections which leads to stopped message transfers (#1677, thanks to @RazvanEmilR).
  • [Server] Fixed not delivered packets to other sessions if the InterceptingClientEnqueueEvent is used and accepting the packet is denied (#1685, thanks to @RossHNPC).
  • [Server] Added missing user properties to subscribe and unsubscribe interceptor (#1702).
MQTTnet - v4.1.4.563

Published by chkr1011 almost 2 years ago

  • [Core] Fixed a memory leak in AsyncSignal implementation (#1586, thanks to @mario-zelger).
  • [Core] Fixed an issue with bounds handling in MqttBufferReader (#1593).
  • [Core] Performance improvements and reduced memory usage due to improved buffer copies (#1599, thanks to @xljiulang).
  • [Server] Fix not properly reset statistics (#1587, thanks to @damikun).
  • [Server] Now using an empty string as the sender client ID for injected application messages (#1583, thanks to @xljiulang).
  • [Server] Improved memory usage for ASP.NET connections (#1582, thanks to @xljiulang).
  • [Server] Improved memory usage and performance for ASP.NET integration (#1596, thanks to @xljiulang).
  • [Server] Add support for interception of will messages (#1613).
  • [Server] Fixed wrong topic filter detections (#1615, thanks to @logicaloud).
MQTTnet - v4.1.3.436

Published by chkr1011 almost 2 years ago

  • [Core] Fixed several dead locks by implementing a new async signal (#1552)
  • [Client] All waiting tasks will now fail when the client connection gets closed. This fixes several freezes (#1561)
  • [ManagedClient] The topic is no longer declared as invalid if a topic alias is used (#1395)
  • [Server] Fixed duplicated invocation of the event ClientAcknowledgedPublishPacketAsync for QoS level 2 (#1550)
  • [Server] Fixed issue in upgrading and downgrading of QoS levels for subscriptions and retained messages (#1560)
  • [Server] Fixed memory leak when old sessions are discarded (#1553)
  • [Server] When using MQTTv5 the reason code NoMatchingSubscribers is returned when no client is subscribed to a published topic (#802)
  • [Server] Fix sending of duplicate messages with QoS > 0 when session is recovered, and session is reused (#1546)
MQTTnet - v4.1.2.350

Published by chkr1011 almost 2 years ago

  • [Core] Fixed dead lock and race conditions in new AsyncLock implementation (#1542).
  • [Client] Fixed connection freeze when using Xamarin etc.
MQTTnet - v4.1.1.318

Published by chkr1011 about 2 years ago

  • [Core] MQTT Packets being sent over web socket transport are now setting the web socket frame boundaries correctly (#1499).
  • [Core] Add support for attaching and detaching events from different threads.
  • [Core] Fixed a deadlock in AsyncLock implementation (#1520).
  • [Client] Keep alive mechanism now uses the configured timeout value from the options (thanks to @Stannieman, #1495).
  • [Client] The PingAsync will fallback to the timeout specified in the client options when the cancellation token cannot be cancelled.
  • [Server] A DISCONNECT packet is no longer sent to MQTT clients < 5.0.0 (thanks to @logicaloud, #1506).
  • [Server] Improved "take over" process handling.
MQTTnet - v4.1.0.247

Published by chkr1011 about 2 years ago

  • [Core] Fixed not working removal of event handlers from async events (#1479).
  • [Client] Added support for passing the local endpoint (network card) which should be used (#1311).
  • [Client] Exposed PackageIdentifier in MqttApplicationMessageReceivedEventArgs (thanks to @koepalex, #1466).
  • [Server] Added a new event (ClientAcknowledgedPublishPacketAsync) which is fired whenever a client acknowledges a PUBLISH packet (QoS 1 and 2, #487).
  • [Server] Exposed channel adapter (HTTP context etc.) in connection validation (#1125).
  • [Server] The event InterceptingPublishAsync is now also called for injected application messages (#1470).
  • [Server] Exposed session items in multiple events (#1291).
MQTTnet - v4.0.2.221

Published by chkr1011 over 2 years ago

  • [Core] Updated nuget packages.
  • [Core] The option IgnoreCertificateChainErrors is now respected (thanks to @GodVenn, #1447).
  • [ManagedClient] The managed client now sends the entire topic filter including new MQTTv5 properties when subscribing.
  • [ManagedClient] Fixed wrong firing of ApplicationMessageSkippedAsync event (thanks to @quackgizmo, #1460).
  • [Server] Fixed reporting of MaximumQoS in ConnAck packet (MQTTv5 only) (#1442).
  • [Server] Fix cross thread issue in session message storage for QoS 1 and 2.
  • [Server] The event ClientSubscribedTopicAsync is now fired after the subscription is completely processed internally (#1435).
  • [Server] Improved CPU usage on lower end machines (#788).
MQTTnet - v4.0.1.184

Published by chkr1011 over 2 years ago

  • [Client] Added the flag try_private (MQTT 3.1.1 Bridge) to client options (#1413).
  • [Client] Fixed MQTTv5 protocol violation in PUBLISH packets (#1423).
  • [Client] Added missing "WithWill..." methods in MqttClientOptionsBuilder.
  • [ManagedClient] Fixed wrong event args type for connected and disconnected events (#1432).
  • [Server] Fixed wrong handling of retained messages with QoS > 0 (#1434).
  • [Server] Connections with try_private flag (MQTT 3.1.1 Bridge) are now accepted (#1413).
MQTTnet - v4.0.0.167

Published by chkr1011 over 2 years ago

We have joined the .NET Foundation! Version 4 comes with a new API so a lot of breaking changes should be expected. Checkout the upgrade guide (https://github.com/dotnet/MQTTnet/wiki/Upgrading-guide) for an overview of the changes. Checkout the new samples (https://github.com/dotnet/MQTTnet/tree/master/Samples) how to use the new API. The wiki only remains for version 3 of this library. Preview builds of this library are available at: https://www.myget.org/feed/mqttnet/package/nuget/MQTTnet

[Core] Improved memory management when working with large payloads.
[Core] Added support for .NET 6.0.
[Core] nuget packages are now created by MSBuild including more information (i.e. commit hash).
[Client] Exposed socket linger state in options.
[Client] The OS will now choose the best TLS version to use. It is no longer fixed to 1.3 etc. (thanks to @patagonaa, #1271).
[Client] Added support for ServerKeepAlive (MQTTv5).
[Client] Exposed user properties and reason string in subscribe result.
[Client] Exposed user properties and reason string in unsubscribe result.
[Client] Migrated application message handler to a regular .NET event (BREAKING CHANGE!).
[Client] The will message is longer a regular application message due to not supported properties by the will message (BREAKING CHANGE!).
[Client] Timeouts are no longer handled inside the library. Each method (Connect, Publish etc.) supports a cancellation token so that custom timeouts can and must be used (BREAKING CHANGE!).
[Client] Exposed certificate revocation mode on options (@andyolivares).
[Server] Exposed socket linger state in options.
[Server] Added support for returning individual subscription errors (#80 thanks to @jimch)
[Server] Improved topic filter comparisons (support for $).
[Server] Added more MQTTv5 response information to all interceptors (BREAKING CHANGE!).
[Server] Improved session management for MQTT v5 (#1294, thanks to @logicaloud).
[Server] All interceptors and events are migrated from interfaces to simple events. All existing APIs are availble but must be migrated to corresponding events (BREAKING CHANGE!).
[Server] Removed all interceptor and event interfaces including the delegate implementations etc. (BREAKING CHANGE!).
[Server] Renamed a lot of classes and adjusted namespaces (BREAKING CHANGE!).
[Server] Introduced a new queueing approach for internal message process (packet bus).
[Server] For security reasons the default endpoint (1883) is no longer enabled by default (BREAKING CHANGE!).
[Server] Added support for choosing the cipher suite (thanks to @TimSiefert).
[Nuget] Added method summaries etc. to nuget packages (thanks to @SpringHgui).

MQTTnet - v3.1.2

Published by chkr1011 over 2 years ago

  • [Client] Increased delay for keep alive checks do decrease CPU load.
  • [Core] Decreased object allocations (#1324, thanks to @gfoidl).
  • [Core] Decreased object allocations when logging is not active (thanks to @gfoidl, @Tymoniden).
  • [Client] Fixed issue in MqttApplicationMessageBuilder.WithPayload (#1322, thanks to @gfoidl).
MQTTnet - v4.0.0-preview1

Published by chkr1011 almost 3 years ago

  • [Core] Improved memory management when working with large payloads.
  • [Core] Added support for .NET 6.0.
  • [Core] nuget packages are now created by MSBuild including more information (i.e. commit hash).
  • [Client] The OS will now choose the best TLS version to use. It is no longer fixed to 1.3 etc. (thanks to @patagonaa, #1271).
  • [Client] Exposed user properties and reason string in subscribe result.
  • [Client] Exposed user properties and reason string in unsubscribe result.
  • [Server] Added support for returning individual subscription errors (#80 thanks to @jimch)
  • [Server] Improved topic filter comparisons (support for $).
  • [Server] Added more MQTTv5 response information to all interceptors (BREAKING CHANGE!).
  • [Server] Improved session management for MQTT v5 (#1294, thanks to @logicaloud).
  • [Server] All interceptors and events are migrated from interfaces to simple events. All existing APIs are availble but must be migrated to corresponding events (BREAKING CHANGE!).
  • [Server] Removed all interceptor and event interfaces including the delegate implementations etc. (BREAKING CHANGE!).
  • [Server] Renamed a lot of classes and adjsuted namespaces (BREAKING CHANGE!).
  • [Server] Introduced a new queueing approach for internal message process (packet bus).
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