すべてのプロダクト
Search
ドキュメントセンター

IoT Platform:MQTT over WebSocket 接続の確立

最終更新日:Jun 03, 2026

IoT Platform は MQTT over WebSocket をサポートしています。WebSocket 接続を確立した後、このチャネルを介して MQTT プロトコルを使用して通信できます。

メリット

WebSocket には以下のメリットがあります。

  • ブラウザベースのアプリケーションが、通常のデバイスと同様に、サーバーへの永続的な MQTT 接続を確立できます。

  • WebSocket はポート 443 を使用するため、ほとんどのファイアウォールを通過できます。

手順

  1. 証明書を準備します。

    WebSocket は、ws (暗号化なし) と wss (TLS 暗号化) の 2 つのプロトコルをサポートしています。wss 接続の場合は、直接 TLS 接続と同じルート証明書を使用してください。

  2. クライアントを選択します。

    ApsaraMQ for MQTT クライアントを使用して、接続 URL を置き換えることができます。その他の言語については、オープンソース MQTT クライアントから選択してください。お使いのクライアントが WebSocket をサポートしていることを確認してください。

  3. IoT Platform に接続します。

    WebSocket MQTT 接続 URL は、直接 TCP 接続とは異なるプロトコルとポートを使用します。その他の MQTT パラメータは同じです。wss 接続の場合は securemode=2 を、ws 接続の場合は securemode=3 を設定してください。

    • エンドポイント: wss://${MQTT_Endpoint} または ws://${MQTT_Endpoint}パブリックインスタンスおよびエンタープライズインスタンスの MQTT エンドポイントについては、「インスタンスエンドポイント情報 (エンドポイント) の表示と設定」をご参照ください。

    • ポート: 443。

    • 可変ヘッダー: Keep Alive。

      Connect メッセージには Keep Alive を含める必要があります。これは、キープアライブ間隔を秒単位で指定します。有効な範囲: 30 ~ 1200。IoT Platform は、この範囲外の接続を拒否します。間隔は 300 秒以上に設定してください。ネットワークが不安定な場合は、より長い間隔を使用してください。

      クライアントは、各キープアライブ間隔内に、PING リクエストなどの少なくとも 1 つのメッセージを送信する必要があります。

      キープアライブ間隔内にクライアントからメッセージを受信しない場合、IoT Platform はクライアントを切断します。その後、クライアントは再接続する必要があります。

    • MQTT Connect メッセージパラメータ:

      mqttClientId: clientId+"|securemode=3,signmethod=hmacsha1,timestamp=132323232|"
      mqttUsername: deviceName+"&"+productKey
      mqttPassword: sign_hmac(deviceSecret,content)

      各パラメータの説明:

      • mqttClientId:拡張パラメーターは縦棒(| |)の間に配置されます。
      • clientId:クライアントの ID。ビジネス要件に基づいてクライアント ID を指定できます。クライアント ID は 64 文字を超えることはできません。デバイスの MAC アドレスまたはシリアル番号(SN)をクライアント ID として使用することをお勧めします。
      • securemode : セキュリティモード。有効な値は 2 (wss プロトコルの場合) と 3 (ws プロトコルの場合) です。

      • signmethod:署名アルゴリズム。有効な値:hmacmd5、hmacsha1、hmacsha256、sha256。デフォルト値:hmacmd5。
      • timestamp:現在の時刻(ミリ秒単位)。このパラメーターはオプションです。
      • mqttPassword:パスワード。計算方法:サーバーに送信されるパラメーターをアルファベット順にソートし、指定された署名アルゴリズムに基づいてパラメーターを暗号化します。署名計算の例の詳細については、「MQTT 接続の署名を作成する例」をご参照ください。
      • content:サーバーに送信されるパラメーターで構成される連結文字列。これらのパラメーターには、productKeydeviceNametimestampclientId が含まれます。パラメーターはアルファベット順にソートされ、デリミタなしで連結されます。
        重要 productKeydeviceName は必須です。timestampclientId はオプションです。timestamp または clientId パラメーターを設定する場合、パラメーター値は mqttClientId パラメーターに指定された値と同じである必要があります。

    接続例 この例では、エンタープライズインスタンス iot-06****9 のデバイスを使用します。

    clientId = 12345、 deviceName = device、 productKey = pk、 timestamp = 789、 signmethod = hmacsha1、 deviceSecret = secret

    接続パラメータ:

    • ws を使用する場合:

      • エンドポイント:

        ws://iot-06****9.mqtt.iothub.aliyuncs.com:80
      • 接続パラメータ:

        mqttclientId=12345|securemode=3,signmethod=hmacsha1,timestamp=789|
        mqttUsername=device&pk
        mqttPassword=hmacsha1("secret","clientId12345deviceNamedeviceproductKeypktimestamp789").toHexString(); 
    • wss を使用する場合:

      • エンドポイント:

        wss://iot-06****9.mqtt.iothub.aliyuncs.com:443
      • 接続パラメータ:

        mqttclientId=12345|securemode=2,signmethod=hmacsha1,timestamp=789|
        mqttUsername=device&pk
        mqttPassword=hmacsha1("secret","clientId12345deviceNamedeviceproductKeypktimestamp789").toHexString();

    デバイス側 SDK を使用して IoT Platform に接続してください。カスタム統合の場合、MQTT 接続署名の例に実装の詳細が記載されています。

MQTT over WebSocket 認証と接続の例