将React Native App连接到Azure IoT服务

时间:2018-12-23 19:28:54

标签: azure react-native azure-iot-hub azure-iot-sdk

我对React Native还是很陌生,但是我创建了一个简单的应用程序,该应用程序具有一个按钮和单击该按钮时会更改的文本。但是,我想连接到IoT中心并从该中心接收信息。

我目前在连接方面遇到问题。这是我的代码:

import React from 'react';
import {StyleSheet, Dimensions, Alert, Text, View, Image, Button} from 'react-native';
const { width, height } = Dimensions.get("window");

    'use strict';
var iothub = require('azure-iothub');
var connectionString = 'connection string';
var Mqtt = require('azure-iot-device-mqtt').Mqtt;
var DeviceClient = require('azure-iot-device').Client
var Message = require('azure-iot-device').Message;

var client = DeviceClient.fromConnectionString(connectionString, Mqtt);

// Create a message and send it to the IoT hub every second
setInterval(function(){
  // Simulate telemetry.
  var temperature = 20 + (Math.random() * 15);
  var message = new Message(JSON.stringify({
    temperature: temperature,
    humidity: 60 + (Math.random() * 20)
  }));

  // Add a custom application property to the message.
  // An IoT hub can filter on these properties without access to the message body.
  message.properties.add('temperatureAlert', (temperature > 30) ? 'true' : 'false');

  console.log('Sending message: ' + message.getData());

  // Send the message.
  client.sendEvent(message, function (err) {
    if (err) {
      console.error('send error: ' + err.toString());
    } else {
      console.log('message sent');
    }
  });
}, 1000);

以上部分是Node.js代码,但是我想在React应用程序中使用它。如何在React中使用Node包?

我遇到以下错误:Could not connect to development server.

谢谢。

3 个答案:

答案 0 :(得分:0)

与您的other question一样,我建议您看看Azure IoT Starter Kit Companion,它是一个示例 React Native 应用程序,可帮助您获取 IoT设备连接到 iOS Android Windows 上的 IoT中心

希望有帮助!

答案 1 :(得分:0)

一点,您不应该发布连接字符串。这是一个相当大的安全问题。

答案 2 :(得分:0)

如您的other question中所述,Azure IoT中心设备SDK需要一个Node.js运行时,该运行时在React Native应用程序中不存在。

React Native有一个名为nodejs-mobile-react-native的插件,可引入Node.js运行时,并使您能够与React Native应用程序一起运行Node.js应用程序。

我为此主题写了detailed blog post,概述了实现该主题所需的步骤。