首页 > 解决方案 > 无法使用 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 创建一个空规则。

标签: javascriptamazon-web-servicesaws-iot

解决方案


推荐阅读