【发布时间】:2018-04-09 10:14:46
【问题描述】:
我最近通过 yarn 下载了paho-mqtt。问题是我不确定我是否正确导入它,因为我收到一个错误:
无法读取未定义的属性“客户端”
我导入和使用的方式是这样的:
import Paho from 'paho-mqtt';
var client = new Paho.MQTT.Client(location.host, location.port, location.clientID)
const MQTTConnectAndMessage = (message) => {
client.connect({onSuccess: sendMQTTMessage})
}
const sendMQTTMessage = (msg) => {
let message = new Paho.MQTT.Message(msg);
message.destinationName = location.messageDestination;
client.send(message);
}
location.host = IP 字符串
location.port = 端口号
location.clientID = clientID 的字符串
如果它是相关的,我会尝试在 React Native 应用程序中使用它。
也许这个模块不打算通过 NPM 或 Yarn 下载?或者也许我不应该进口“Paho”?
编辑:当使用react-native-paho-mqtt--这是我正在使用的代码:
const client = new Client({ uri: 'ws://myiphere/ws', port: 1883, clientId: 'clientId', storage: myStorage});
const sendMQTTMessage = (msg) => {
client.on('connectionLost', (responseObject) => {
if (responseObject.errorCode !== 0) {
console.log("connection lost!");
}
});
client.on('messageReceived', (message) => {
console.log(message.payloadString);
});
client.connect()
.then(() => {
const message = new Message(msg);
message.destinationName = 'F2/BOX2/LED3';
client.send(message);
})
.catch((responseObject) => {
if (responseObject.errorCode !== 0) {
console.log('onConnectionLost:' + responseObject.errorMessage);
}
});
}
export {
sendMQTTMessage
}
我注意到,每当我输入任何不以 ws://(网络套接字)开头的内容时,我都会收到一个 URI 错误。
【问题讨论】:
-
第二行缺少分号
-
仍然打印同样的错误信息...
-
你必须使用
ws://url 和 paho javascript 客户端,它不支持原生 MQTT(tcp://或mqtt://url)。您需要确保您的 MQTT 代理支持 MQTT over Websockets 并确保它已启用 -
这也很可能不在端口 1883(默认本地 MQTT 端口)上
标签: javascript react-native mqtt paho