Las dos versiones a la vez
MQTT 3.1.1 y MQTT 5.0 funcionan simultáneamente en el mismo puerto, y los clientes de cualquiera de las dos intercambian mensajes con libertad. El códec codifica y decodifica los 15 tipos de paquete y valida los límites del Variable Byte Integer, las propiedades duplicadas y los bits reservados.
QoS 0, 1 y 2
Negociaciones completas, supresión de duplicados en QoS 2 y reenvío de los intercambios inacabados tras una reconexión. Las colas sin conexión de las sesiones persistentes sobreviven al reinicio del broker.
Retain y Last Will
Un almacén de mensajes retenidos con borrado mediante carga útil vacía, incluidas ramas enteras, además de Retain Handling 0/1/2 y Retain As Published. El testamento se envía en todos los escenarios de desconexión, incluido el Will Delay Interval de la versión 5.
Capacidades de la versión 5
Alias de topics en ambos sentidos, Session Expiry, Receive Maximum y control de flujo, Maximum Packet Size, identificadores de suscripción, suscripciones compartidas mediante $share, No Local, Message Expiry, Payload Format Indicator con validación UTF-8, Content Type, Response Topic, Correlation Data, User Properties, códigos de razón en cada paquete, DISCONNECT del servidor y el paquete AUTH.
Topics de sistema $SYS
La versión, el tiempo en marcha y los contadores de clientes, mensajes, bytes y errores se publican como mensajes retenidos. La rama está cerrada por defecto: los comodines no alcanzan los topics $, a los clientes anónimos se les niega todo el espacio de nombres y un interruptor en los ajustes desactiva la publicación por completo.