Todos los productos
Search
Centro de documentos

IoT Platform:Establish MQTT over WebSocket connections

Última actualización: Sep 03, 2026

IoT Platform admite MQTT sobre WebSocket. Puede establecer una conexión WebSocket y utilizar el protocolo MQTT para comunicarse a través de este canal.

Beneficios

WebSocket ofrece los siguientes beneficios:

  • Las aplicaciones basadas en navegador pueden establecer conexiones MQTT persistentes con el servidor, de forma similar a los dispositivos convencionales.

  • WebSocket utiliza el puerto 443, lo que permite atravesar la mayoría de los firewalls.

Procedimiento

  1. Prepare un certificado.

    WebSocket admite dos protocolos: ws (sin cifrado) y wss (cifrado con TLS). Para las conexiones wss, utilice el mismo certificado raíz que para las conexiones TLS directas.

  2. Seleccione un cliente.

    Puede utilizar el cliente de ApsaraMQ for MQTT y reemplazar la URL de conexión. Para otros lenguajes, elija entre los clientes MQTT de código abierto. Compruebe que su cliente admita WebSocket.

  3. Conéctese a IoT Platform.

    La URL de conexión MQTT por WebSocket utiliza un protocolo y un puerto distintos a los de una conexión TCP directa. Los demás parámetros de MQTT permanecen igual. Establezca securemode=2 para conexiones wss y securemode=3 para conexiones ws.

    • Endpoint: wss://${MQTT_Endpoint} o ws://${MQTT_Endpoint}. Los endpoints MQTT para instancias públicas y Enterprise se enumeran en View and configure instance endpoint information (Endpoint).

    • Puerto: 443.

    • Encabezado variable: Keep Alive.

      El mensaje Connect debe incluir Keep Alive, que especifica el intervalo de keepalive en segundos. Rango válido: de 30 a 1200. IoT Platform rechaza las conexiones fuera de este rango. Configure el intervalo en 300 segundos o más. Utilice un intervalo mayor para redes inestables.

      El cliente debe enviar como mínimo un mensaje, como una solicitud PING, dentro de cada intervalo de keepalive.

      Si IoT Platform no recibe mensajes del cliente durante un intervalo de keepalive, desconecta al cliente. En ese caso, el cliente debe volver a conectarse.

    • Parámetros del mensaje Connect de MQTT:

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

      Donde:

      • mqttClientId: Los parámetros extendidos se colocan entre barras verticales (| |).

      • clientId: El ID del cliente. Puede especificar un ID de cliente según sus requisitos empresariales. El ID del cliente no puede superar los 64 caracteres de longitud. Se recomienda utilizar la dirección MAC o el número de serie (SN) del dispositivo como ID del cliente.

      • securemode: El modo de seguridad. Los valores válidos son 2 (para el protocolo wss) y 3 (para el protocolo ws).

      • signmethod: El algoritmo de firma. Valores válidos: hmacmd5, hmacsha1, hmacsha256 y sha256. Valor predeterminado: hmacmd5.

      • timestamp: La hora actual, en milisegundos. Este parámetro es opcional.

      • mqttPassword: La contraseña. Método de cálculo: Ordene alfabéticamente los parámetros que se envían al servidor y cífrelos con el algoritmo de firma especificado. Para obtener más información sobre el ejemplo de cálculo de firma, consulte Examples of creating signatures for MQTT connections.

      • content: Una cadena concatenada formada por los parámetros que se envían al servidor. Estos parámetros incluyen productKey, deviceName, timestamp y clientId. Los parámetros se ordenan alfabéticamente y se concatenan sin delimitadores.

        Importante

        productKey

        y

        deviceName

        son obligatorios.

        timestamp

        y

        clientId

        son opcionales. Si configura el parámetro

        timestamp

        o

        clientId

        , su valor debe coincidir con el valor especificado en el parámetro

        mqttClientId

        .

    Ejemplo de conexiónEste ejemplo utiliza un dispositivo en la instancia Enterprise iot-069.

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

    Parámetros de conexión:

    • Con ws:

      • Endpoint:

        ws://iot-06****9.mqtt.iothub.aliyuncs.com:443
      • Parámetros de conexión:

        mqttclientId=12345|securemode=3,signmethod=hmacsha1,timestamp=789|
        mqttUsername=device&pk
        mqttPassword=hmacsha1("secret","clientId12345deviceNamedeviceproductKeypktimestamp789").toHexString(); 
    • Con wss:

      • Endpoint:

        wss://iot-06****9.mqtt.iothub.aliyuncs.com:443
      • Parámetros de conexión:

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

    Utilice un SDK del lado del dispositivo para conectarse a IoT Platform. Para integraciones personalizadas, MQTT connection signature example proporciona los detalles de implementación.

Ejemplos

MQTT-WebSocket authentication and connection example