新功能发布记录
def on_connect(client, userdata, flags, rc, properties=None):"""连接回调函数重要参数:rc: ReasonCode 对象 - 由 paho-mqtt 库自动传入表示连接结果的原因码"""# ============ Reason Code 的核心用法 ============# 1. 查看 ReasonCode 对象的类型print(f"\\n1️⃣ ReasonCode 对象类型: {type(rc).__name__}")# 2. 获取 Reason Code 的数值rc_value = rc.value if hasattr(rc, 'value') else int(rc)print(f"2️⃣ Reason Code 数值: {rc_value}")# 3. 获取 Reason Code 的名称rc_name = rc.getName() if hasattr(rc, 'getName') else str(rc)print(f"3️⃣ Reason Code 名称: {rc_name}")// 示例输出⏳ 正在连接 MQTT 服务器...1️⃣ ReasonCode 对象类型: ReasonCode2️⃣ Reason Code 数值: 1343️⃣ Reason Code 名称: Bad user name or password
Code (Hex/Dec) | 名称 (Name) | 适用报文 | 解释 |
0x00 (0) | Success / Normal disconnection | 所有响应报文 | 表示操作成功,或客户端正常断开连接(不会触发遗嘱消息)。 |
0x01 (1) | Granted QoS 1 | SUBACK | 订阅成功,且服务端授予的最大服务质量等级为 QoS 1。 |
0x02 (2) | Granted QoS 2 | SUBACK | 订阅成功,且服务端授予的最大服务质量等级为 QoS 2。 |
0x04 (4) | Disconnect with Will Message | DISCONNECT | 客户端主动断连,并请求服务端发布其遗嘱消息。 |
0x18 (24) | Continue authentication | AUTH | 增强认证过程中的一步,表示需要继续交换认证数据。 |
Code (Hex/Dec) | 名称 (Name) | 适用报文 | 解释 |
0x19 (25) | Re-authenticate | AUTH | 客户端在连接后发起重新认证。如果重认证失败,连接将被关闭。 |
0x85 (133) | Client Identifier not valid | CONNACK | Client ID 格式有效,但被服务端拒绝(例如,Clean Start=0 时为空)。 |
0x86 (134) | Bad User Name or Password | CONNACK | 用户名或密码错误,连接被拒绝。 |
0x87 (135) | Not authorized | 所有响应报文 | 未被授权执行此操作。比 0x86 更通用,适用于 Token 认证或发布/订阅权限检查。 |
0x8A (138) | Banned | CONNACK | 客户端已被封禁(例如,IP 或 Client ID 被加入黑名单)。 |
0x8C (140) | Bad authentication method | CONNACK, DISCONNECT | 客户端指定的认证方法不被服务端支持。 |
Code (Hex/Dec) | 名称 (Name) | 适用报文 | 解释 |
0x88 (136) | Server unavailable | CONNACK | 服务端暂时不可用(例如,依赖的认证服务故障)。 |
0x89 (137) | Server busy | CONNACK, DISCONNECT | 服务端正忙,请客户端稍后重试。 |
0x8B (139) | Server shutting down | DISCONNECT | 服务端正在关闭,主动通知客户端。 |
0x95 (149) | Packet too large | CONNACK, DISCONNECT | 发送的报文大小超过了约定的最大值。 |
0x96 (150) | Message rate too high | DISCONNECT | 客户端消息发送频率过高。 |
0x97 (151) | Quota exceeded | 所有响应报文 | 客户端的资源配额已用尽(如每日消息条数)。 |
0x9F (159) | Connection rate exceeded | CONNACK, DISCONNECT | 客户端连接速率过快。 |
Code (Hex/Dec) | 名称 (Name) | 适用报文 | 解释 |
0x80 (128) | Unspecified error | 所有响应报文 | 未指明的通用错误,当没有更具体的 Code 可用时使用。 |
0x81 (129) | Malformed Packet | CONNACK, DISCONNECT | 报文格式不符合规范,无法被正确解析。 |
0x82 (130) | Protocol Error | CONNACK, DISCONNECT | 报文格式正确,但内容或行为违反了协议规定(如发送两个 CONNECT)。 |
0x83 (131) | Implementation specific error | 所有响应报文 | 报文有效,但不被当前接收方的具体实现所接受。 |
0x84 (132) | Unsupported Protocol Version | CONNACK | 服务端不支持客户端请求的 MQTT 协议版本。 |
0x91 (145) | Packet Identifier in use | PUBACK, PUBREC, SUBACK, UNSUBACK | 报文标识符(Packet ID)正在被用于另一个未完成的QoS 1或2消息流程中,通常表示会话状态不匹配。 |
0x92 (146) | Packet Identifier not found | PUBREL, PUBCOMP | 在QoS 2流程中,接收方未找到与PUBREL或PUBCOMP报文对应的Packet ID,通常表示会话状态不匹配。 |
0x99 (153) | Payload format invalid | CONNACK, PUBACK, PUBREC, DISCONNECT | 消息的载荷格式与Payload Format Indicator属性声明的不符。 |
0x9B (155) | QoS not supported | CONNACK, DISCONNECT | 请求的 QoS 等级不被接收方支持。 |
Code (Hex/Dec) | 名称 (Name) | 适用报文 | 解释 |
0x10 (16) | No matching subscribers | PUBACK, PUBREC | 消息已收到,但当前没有订阅者匹配该主题(服务端可选实现)。 |
0x11 (17) | No subscription existed | UNSUBACK | 取消订阅时,未找到对应的订阅关系。 |
0x8F (143) | Topic Filter invalid | SUBACK, DISCONNECT | 订阅的主题过滤器格式有效,但不被服务端接受(如层级过深)。 |
0x90 (144) | Topic Name invalid | CONNACK, PUBACK... | 发布的主题名格式有效,但不被服务端接受。 |
0x94 (148) | Topic Alias invalid | DISCONNECT | PUBLISH报文中的主题别名值为0或大于连接时约定的最大值。 |
0x9A (154) | Retain not supported | CONNACK, DISCONNECT | 服务端不支持保留消息。 |
0x9E (158) | Shared Subscriptions not supported | SUBACK, DISCONNECT | 服务端不支持共享订阅。 |
0xA1 (161) | Subscription Identifiers not supported | SUBACK, DISCONNECT | 服务端不支持订阅标识符,但客户端在订阅时使用了该属性。 |
0xA2 (162) | Wildcard Subscriptions not supported | SUBACK, DISCONNECT | 服务端不支持通配符订阅。 |
Code (Hex/Dec) | 名称 (Name) | 适用报文 | 解释 |
0x8D (141) | Keep Alive timeout | DISCONNECT | 服务端在1.5倍的Keep Alive时间内未收到客户端任何报文,主动断开连接。 |
0x8E (142) | Session taken over | DISCONNECT | 一个新的连接使用了相同的 Client ID,导致当前会话被接管。 |
0x93 (147) | Receive Maximum exceeded | DISCONNECT | 发送方未确认的 QoS > 0 消息数超过了接收方约定的 Receive Maximum 值。 |
0x98 (152) | Administrative action | DISCONNECT | 连接因管理操作而被关闭,例如运维人员在后台手动剔除此连接。 |
0x9C (156) | Use another server | CONNACK, DISCONNECT | 告知客户端应临时切换到另一个服务器。 |
0x9D (157) | Server moved | CONNACK, DISCONNECT | 告知客户端应永久切换到另一个服务器。 |
0xA0 (160) | Maximum connect time | DISCONNECT | 连接时长超过了服务端为本次授权设定的最大值(如 JWT 过期)。 |
文档反馈