大疆无人机指令飞行JWT认证
无人机一键起飞后,进入指令飞行模式报错: Error:{errorCode=514304, errorMsg=DRC link is refused.}; Failed to enter command flight control mode, please try again later!
确保emqx的8883端口开放
emqx创建JWT认证
- JWT 来自于password
- 加密方式:hmac-based
- Secret为application.yml文件中的jwt.secret,将密钥复制到此处即可
- 不要勾选base64加密
- 不要勾选过期后断开连接
将JWT认证前置到第一位
调大过期时间
为了便于测试,调大过期时间,默认的过期时间为3600毫秒。时间非常短,如果网络连接有延迟,基本上100%会报错:Error: Connection refused: Bad User Name or Password
为了便于测试,修改为20秒。
RedisConst.DRC_MODE_ALIVE_SECOND=20000
而且不修改此时间,前台ws连接重连时,会再次报错
bad_username_or_password
未找到此处一直重连的原因
下面代码为JWT Token生成代码(可跳过)
MqttPropertyConfiguration.getMqttBrokerWithDrc(param.getDockSn() + "-" + System.currentTimeMillis(), param.getDockSn(),
RedisConst.DRC_MODE_ALIVE_SECOND.longValue(),
Map.of(MapKeyConst.ACL, objectMapper.convertValue(JwtAclDTO.builder()
.pub(List.of(subTopic))
.sub(List.of(pubTopic))
.build(), new TypeReference<Map<String, ?>>() {})))
MQTTX测试
此时就可以调试mq消息了
进入指令模式
以上步骤完成后,就可以进入指令飞行模式了