今天遇到一个MQTT的问题,MqttException: MQIsdp ClientId > 23 bytes
ClientId的长度大于23时,无法链接MQTT服务器。
经过查看协议发现:客户端标识符(Client ID)是介于1和23个字符长度,客户端到服务器的唯一标识。它必须在搜有客户端连接到一台服务器是唯一的,是在处理QoS级别1和2的消息ID中的关键。如果客户端ID包含23个字符,服务器响应CONNECT消息,通过一个CONNACK,返回码2:标识符被拒绝。
英文原版的协议中是这样描述的:
E文不行,好像是说开始的版本有23个字符的限制,后来的版本可以超过23字符了。
不过最新的Mosquitto只支持到了3.1.1,无奈只能改ClientId的规则,不超过23字符。