7 Conformance

The MQTT specification defines conformance for MQTT Client implementations and MQTT Server implementations.

An MQTT implementation MAY conform as both an MQTT Client and MQTT Server implementation.
A Server that both accepts inbound connections and establishes outbound connections to other Servers MUST conform as both an MQTT Client and MQTT Server
[MQTT-7.0.0-1].

Conformant implementations MUST NOT require the use of any extensions defined outside of this specification in order to interoperate with any other conformant implementation [MQTT-7.0.0-2].

7.1 Conformance Targets

7.1.1 MQTT Server

An MQTT Server conforms to this specification only if it satisfies all the statements below:

1. The format of all Control Packets that the Server sends matches the format described in Chapter 2 and Chapter 3.

2. It follows the Topic matching rules described in Section 4.7 Topic Names and Topic Filters.

3. It satisfies all of the MUST level requirements in the following chapters that are identified except for those that only apply to the Client:

  • Chapter 1 - Introduction
  • Chapter 2 - MQTT Control Packet format
  • Chapter 3 - MQTT Control Packets
  • Chapter 4 - Operational behavior
  • Chapter 6 - (if MQTT is transported over a WebSocket connection)
  • Chapter 7 - Conformance Targets

A conformant Server MUST support the use of one or more underlying transport protocols that provide an ordered, lossless, stream of bytes from the Client to Server and Server to Client [MQTT-7.1.1-1]. However conformance does not depend on it supporting any specific transport protocols. A Server MAY support any of the transport protocols listed in Section 4.2 Network Connections, or any other transport protocol that meets the requirements of [MQTT-7.1.1-1].

7.1.2 MQTT Client

An MQTT Client conforms to this specification only if it satisfies all the statements below:

1. The format of all Control Packets that the Client sends matches the format described in Chapter 2 and Chapter 3.

2. It satisfies all of the MUST level requirements in the following chapters that are identified except for those that only apply to the Server:

  • Chapter 1 - Introduction
  • Chapter 2 - MQTT Control Packet format
  • Chapter 3 - MQTT Control Packets
  • Chapter 4 - Operational behavior
  • Chapter 6 - (if MQTT is transported over a WebSocket connection)
  • Chapter 7 - Conformance Targets

A conformant Client MUST support the use of one or more underlying transport protocols that provide an ordered, lossless, stream of bytes from the Client to Server and Server to Client [MQTT-7.1.2-1]. However conformance does not depend on it supporting any specific transport protocols. A Client MAY support any of the transport protocols listed in Section 4.2 Network Connections, or any other transport protocol that meets the requirements of [MQTT-7.1.2-1].