Les deux versions à la fois
MQTT 3.1.1 et MQTT 5.0 tournent simultanément sur le même port, et les clients de l'une ou l'autre version échangent librement. Le codec encode et décode les 15 types de paquets et valide les bornes des Variable Byte Integer, les propriétés en double et les bits réservés.
QoS 0, 1 et 2
Poignées de main complètes, suppression des doublons en QoS 2 et retransmission des échanges inachevés après une reconnexion. Les files hors ligne des sessions persistantes survivent au redémarrage du broker.
Retain et Last Will
Un magasin de messages retenus avec purge par charge utile vide, y compris de branches entières, plus Retain Handling 0/1/2 et Retain As Published. Le testament est envoyé dans tous les scénarios de déconnexion, y compris le Will Delay Interval de la version 5.
Capacités de la version 5
Alias de topics dans les deux sens, Session Expiry, Receive Maximum et contrôle de flux, Maximum Packet Size, identifiants d'abonnement, abonnements partagés via $share, No Local, Message Expiry, Payload Format Indicator avec validation UTF-8, Content Type, Response Topic, Correlation Data, User Properties, codes de raison dans chaque paquet, DISCONNECT côté serveur et le paquet AUTH.
Topics système $SYS
Version, durée de fonctionnement et compteurs de clients, messages, octets et erreurs sont publiés comme messages retenus. La branche est fermée par défaut : les jokers n'atteignent pas les topics $, les clients anonymes se voient refuser tout l'espace de noms, et un interrupteur dans les réglages coupe entièrement la publication.