使用 React Native 通过 Azure IOT HUB 连接到 MQTT 客户端

问题描述 投票:0回答:1

我正在尝试使用 MQTT 直接连接到 Azure IoT 中心来发布消息。 为此,我尝试了多个软件包,但无法成功连接。

react-native-mqtt-clientssp-react-native-mqttmqtt@ko-developerhong/react-native-mqtt但不工作。

这是使用 sp-react-native-mqtt 的代码参考之一。

export const connectToMQTT = async (iotHubName, deviceId, sasToken) => {
  const user = `${iotHubName}/${deviceId}/?api-version=2021-04-12`;
  MQTT.createClient({
    // uri: `mqtts://${iotHubName}:8883`,
    clientId: deviceId,
    username: user,
    pass: sasToken,
    protocol: 'mqtts',
    host: iotHubName,
    port: 8883,
    keepalive: 60,
  })
    .then(function (client) {
      client.on('closed', function () {
        console.log('mqtt.event.closed');
      });

      client.on('error', function (msg) {
        console.log('mqtt.event.error', msg);
      });

      client.on('message', function (msg) {
        console.log('mqtt.event.message', msg);
      });

      client.on('connect', function () {
        console.log('connected');
        client.subscribe('/data', 0);
        client.publish('/data', 'test', 0, false);
      });

      client.connect();
    })
    .catch(function (err) {
      console.log(err);
    });
}; 

任何意见都会有帮助,谢谢

react-native mqtt azure-iot-hub
1个回答
0
投票

我的猜测是您使用的 SAS 令牌有问题。这是一个非常简单的示例,使用 mqtt 包连接到 IoT 中心。我使用 Azure CLI 生成了 SAS 令牌:

import mqtt from 'mqtt';

const client = mqtt.connect('mqtt://YOUR_HUB_NAME.azure-devices.net', { 
  username: 'YOUR_HUB_NAME.azure-devices.net/YOUR_DEVICE_ID/?api-version=2021-04-12',
  // Create a SAS token to use as the password. For example, using the Azure CLI:
  // az iot hub generate-sas-token --hub-name YOUR_HUB_NAME --device-id YOUR_DEVICE_ID
  password: 'SharedAccessSignature sr=YOUR_HUB_NAME.azure-devices.net%2Fdevices%2FYOUR_DEVICE_ID&sig=ZRC...%3D&se=1719309346',
  clientId: 'YOUR_DEVICE_ID',
  protocol: 'mqtts',
  port: 8883

});

client. On('connect', (err) => {
  console.log('Connected'); 
});

client. On('error', (err) => {
  console.log('Error: ', err);
});

如果您还没有找到它,这里有大量有关直接通过 IoT 中心使用 MQTT 的信息:https://learn.microsoft.com/azure/iot/iot-mqtt-connect-to-iot-hub

© www.soinside.com 2019 - 2024. All rights reserved.