MQTT v3.1.1
MQTT v3.1.1 協議只有 10 種返回碼,這些返回碼所能表示的含義很少,且相同的返回碼的值在不同的報文中可以有不同的含義。


MQTT v5.0
MQTT v5.0 協議將返回碼改名成了原因碼,增加了用於表示更多型別的錯誤的原因碼。 下表是原因碼列表,分別表示的是原因碼的值以及包含原因碼的控制報文:

原因碼是用來表明操作結果的一個單位元組無符號值,小於 0x80 的原因碼錶明操作的結果是成功的,正常情況下,操作成功返回的原因碼值為 0。 如果返回的原因碼大於等於 0x80,就說明操作失敗了。
CONNACK, PUBACK, PUBREC, PUBREL, PUBCOMP, DISCONNECT 和 AUTH 控制報文的原因碼存在可變報頭中。而 SUBACK 和 UNSUBACK 報文在有效載荷中包含了一張原因碼的列表。