最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

reactjs - AWS IoT MQTT Connection Issues with Cognito Authentication in React App - Stack Overflow

programmeradmin4浏览0评论

I'm building a React application that connects to AWS IoT via MQTT. I'm using Amazon Cognito for authentication and obtaining credentials from an Identity Pool.

Despite successful authentication and credential retrieval, the MQTT client remains offline and does not receive messages.

import { useEffect, useState, useMemo } from "react";
import mqtt from "mqtt";
import { SignatureV4 } from "@aws-sdk/signature-v4";
import { Sha256 } from "@aws-crypto/sha256-browser";
import { HttpRequest } from "@aws-sdk/protocol-http";
import { fromCognitoIdentityPool } from "@aws-sdk/credential-providers";
import { useAuth } from "react-oidc-context";

// AWS IoT Configuration
const AWS_REGION_IOT = "XXXX";
const AWS_REGION_POOL = "XXXX";
const IOT_ENDPOINT = "XXXX.iot.XXXX.amazonaws";
const IDENTITY_POOL_ID = "XXXX:XXXX-XXXX-XXXX-XXXX-XXXXXXXX";

// Define MQTT message structure
interface MqttMessage {
  status: string;
  progress: number;
  id_job?: string;
  error?: number;
}

type MqttMessagesState = Record<string, MqttMessage>;

const useMQTT = (): MqttMessagesState => {
  const [mqttMessages, setMqttMessages] = useState<MqttMessagesState>({});
  const auth = useAuth();

  // Ensure token is available before proceeding
  const idToken = useMemo(() => auth.user?.id_token || "", [auth.user]);

  useEffect(() => {
    if (!auth.isAuthenticated || !idToken) {
      console.warn("❌ User is not authenticated. Cannot connect to MQTT.");
      return;
    }

    console.log("
发布评论

评论列表(0)

  1. 暂无评论