【发布时间】:2021-02-07 20:59:20
【问题描述】:
-
我已经有一个 Aws IoT 设置。
-
我有一个 react native 简单的应用程序,在 android 模拟器中运行。
-
我已经实现了这个库https://www.npmjs.com/package/react-native-native-mqtt。
-
我的 pem、crt 和密钥存储在 %USERPROFILE%\certs 中。
-
我在我的 cmd
mqtt pub --cafile %USERPROFILE%\certs\root-ca.pem --cert %USERPROFILE%\certs\certificate.pem.crt --key %USERPROFILE%\certs\private.pem.key -d -h ******-ats.iot.us-east-2.amazonaws.com -p 8883 -t test -m "hello there"中运行这个命令 -
我查过了。它出现在 Aws IoT 测试控制台中,我订阅了
test。
到目前为止没有发生错误。
我的 react native 中有这段代码:
const mqtt = require('mqtt')
const fs = require('fs')
// const KEY = fs.readFileSync('%USERPROFILE%\certs\private.pem.key');
// const CERT = fs.readFileSync('%USERPROFILE%\certs\certificate.pem.crt');
// const CAfile = [fs.readFileSync('%USERPROFILE%\certs\root-ca.pem')];
const KEY = './aws/private.pem.key';
const CERT = './aws/certificate.pem.crt';
const CAfile = ['./aws/root-ca.pem'];
const options = {
host: "******-ats.iot.us-east-2.amazonaws.com",
port: 8883,
protocolId: 'MQIsdp',
ca: CAfile,
keyPath: KEY,
certPath: CERT,
secureProtocol: 'TLSv1_method',
protocolVersion: 3
};
const client = mqtt.connect(options)
client.on('connect', function () {
client.subscribe('test', function (err) {
if (!err) {
client.publish('test', 'Hello mqtt')
}
})
})
client.on('message', function (topic, message) {
// message is Buffer
console.log(message.toString())
client.end()
})
我已经尝试使用 fs,它导致错误fs.readFileSync is not a function
所以,我使用这条路径'./aws/private.pem.key''./aws/certificate.pem.crt''./aws/root-ca.pem'
这是错误:
到 'ws://localhost:8883/' 的 WebSocket 连接失败:错误 连接建立:net::ERR_CONNECTION_REFUSED createBrowserWebSocket@ws.js:108 browserStreamBuilder@ws.js:134 包装器@index.js:154 ../../../../../../../../../Documents/_msit/iot/Round 2/mqttks/node_modules/mqtt/lib/client.js.MqttClient._setupStream@ client.js:298 ../../../../../../../../../Documents/_msit/iot/Round 2/mqttks/node_modules/mqtt/lib/client.js.MqttClient._reconnect@ client.js:938(匿名)@client.js:958
我想知道为什么它的本地主机,即使我设置了主机。
所以,我的问题是,如何将这个正在工作的命令 mqtt pub --cafile %USERPROFILE%\certs\root-ca.pem --cert %USERPROFILE%\certs\certificate.pem.crt --key %USERPROFILE%\certs\private.pem.key -d -h ******-ats.iot.us-east-2.amazonaws.com -p 8883 -t test -m "hello there" 转换为 MQTT.js、Javascript、mqtt.connect()?
【问题讨论】:
标签: react-native-android mqtt aws-iot