【问题标题】:Paho MQTT: Possible importing error?Paho MQTT:可能的导入错误?
【发布时间】: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


【解决方案1】:

paho-mqtt库改了,示例代码不正确

var client = new Paho.MQTT.Client(location.host, location.port, location.clientID)

应该改为(从对象路径中移除MQTT):

var client = new Paho.Client(location.host, location.port, location.clientID)

请参阅 GitHub README 页面中的“重大更改”: paho.mqtt.javascript

【讨论】:

    【解决方案2】:

    试试这个 react-native 兼容库:https://www.npmjs.com/package/react-native-paho-mqtt

    yarn add react-native-paho-mqtt

    【讨论】:

    • 我已经做到了。不幸的是,每次我输入服务器的 IP 时,都会出现 URI 错误。
    • 你能复制+粘贴错误和导致错误的行吗?
    • 已更新...当我在 uri 中附加 ws:// 时,uri 错误消失了...但是我无法建立连接...我会说我的 MQTT 服务器没有支持 WebSockets,但我使用 python 版本的 paho 没有任何问题——使用 WebSockets...现在的问题是我在控制台中只得到一个“onConnectionLost.undefined”对象。
    猜你喜欢
    • 1970-01-01
    • 2017-07-16
    • 1970-01-01
    • 1970-01-01
    • 2018-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多