Differences between 3.1.0 and 3.1.1 - mqtt/mqtt.org GitHub Wiki

Differences between versions 3.1.0 and 3.1.1 of the MQTT specification:

3.1.0 specification: http://public.dhe.ibm.com/software/dw/webservices/ws-mqtt/mqtt-v3r1.html

3.1.1 specification: http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/mqtt-v3.1.1.html

No. Description Reference to 3.1.1 specification
1. Strings must all be verified to be valid UTF-8 1.5.3 UTF-8 encoded strings
2. Must disconnect if string contains NULL 1.5.3 UTF-8 encoded strings
3. Protocol name has changed to MQTT 3.1.2.1 Protocol Name
4. Protocol level has changed to 0x04 3.1.2.2 Protocol Level
5. ClientIds MAY contain more than 23 encoded bytes 3.1.3.1 Client Identifier
6. ClientId MAY be zero bytes long 3.1.3.1 Client Identifier
7. ClientId MUST actually be UTF-8 3.1.3.1 Client Identifier
8. ClientId MAY be restricted to alphanumeric chars 3.1.3.1 Client Identifier
9. CONNACK has new "session present" flag 3.2.2.2 Session Present
10. Ensure that DUP isn't set for QoS 0 3.3.1.1 DUP
11. SUBACK can now indicate failure 3.9.3 Suback Payload
12. Clients are allowed to send further Control Packets immediately after sending a CONNECT Packet 3.1.4 Response
13. Allow use of WebSocket to initiate connection 6 Using WebSocket as a network transport

Other more general changes

  • Flags in the fixed header are now specific to the packet type.
  • Clarifications to storing/clearing 0 byte retained messages

Terminology changes

  • MQ Telemetry Transport is now MQTT
  • MQTT Broker is now MQTT Server
  • Message ID is now Packet ID
  • command message is now Control Packet
  • Control Packets "Subscribe" and "Unsubscribe" take Topic Filters, rather than Topic names