javascript - 无法使用 aws-iot-device-sdk 发布,但可以订阅
问题描述
我的 mqtt 客户端无法将消息发布到 AWS,但能够接收它们。以下代码用于订阅 mqtt 客户端,并将收到的消息打印到控制台。
if (Object.keys(cred).length !== 0) { //if temp creds exist, create mqtt client
const mqttClient = AWSIoTData.device({
region: awsConfig.region,
host: awsConfig.mqttEndpoint,
clientId: awsConfig.clientId,
protocol: "wss",
maximumReconnectTimeMs: 8000,
debug: false,
accessKeyId: String(cred.AccessKeyId),
secretKey: String(cred.SecretAccessKey),
sessionToken: String(cred.SessionToken),
});
mqttClient.on("connect", () => {
console.log("mqttClient connected");
mqttClient.subscribe("mg/autogenstart/fromDevice");
});
mqttClient.on("message", (topic, payload) => {
console.log(JSON.parse(payload.toString()));
});
但是,以下代码无法在连接时发布到客户端。
if (Object.keys(cred).length !== 0) { //if temp creds exist, create mqtt client
const mqttClient = AWSIoTData.device({
region: awsConfig.region,
host: awsConfig.mqttEndpoint,
clientId: awsConfig.clientId,
protocol: "wss",
maximumReconnectTimeMs: 8000,
debug: false,
accessKeyId: String(cred.AccessKeyId),
secretKey: String(cred.SecretAccessKey),
sessionToken: String(cred.SessionToken),
});
mqttClient.on("connect", () => {
console.log("mqttClient connected");
mqttClient.publish(
"mg/autogenstart/toDevice",
JSON.stringify({ test_data: 1 })
);
});
任何想法为什么?我尝试使用相同的主题,并在 IoT Core 中为 mg/autogenstart/toDevice 创建一个空规则。
解决方案
推荐阅读
- r - 在 R 中执行 Postgres 函数
- python - DataFrame.where,使用数组作为条件时出错
- python - 我有一个包含 130 个变量的数据集,我必须检查所有变量的相关性,有什么方法可以检查一次
- ios - 观察 NSManagedObject 变量上的 didSet
- flutter - 将 Flutter 动画场景编码为视频文件
- html - 如何防止孩子在flexbox中超出其父宽度?
- excel - 输出字符串文本数组,但在代码字典数组中我有两个具有相同字母的字符串
- javascript - 错误类型错误:无法读取未定义的属性“替换”
- python - 在有向图中查找结束节点
- android - 当有一个带按钮的 RecyclerView 时,SetFocus 无法使用硬件键盘处理 Activity 的 EditText