首页 > 解决方案 > 同时使用 mqtt.js 时,ibmiotf 客户端不发布

问题描述

我正在与多个经纪人合作一个项目,第一个是 IBM IoT Watson,第二个是我的经纪人。

我正在尝试连接它们,听取我的代理的更改,并将它们发布到 IBM Watson IOT。

我正在使用 nodejs ibmiotf 和 mqtt.js,

这是代码:

const mqtt = require('mqtt');
const Client = require("ibmiotf");
const appClientConfig = require('../config').watsonIoTConfigs;
const rp = require('request-promise');
let appClient = new Client.IotfApplication(appClientConfig);
appClient.connect();

let myClient  = new mqtt.connect('tcp://myserver', {
    clientId: 'id222s2',
    username: 'username',
    password: 'password',
    port: 221112,
    will: {
        topic: 'server_disconnected',
        payload: "Server disconnected!, please call technical support",
        qos: 2
    }
});

appClient.on("connect", () => {
    console.log('ibmiot connected');
    appClient.subscribeToDeviceStatus();
    appClient.subscribeToDeviceEvents();
});

myClient.on('message', function (topic, message) {
  appClient.publish("topic1", "json", 'something') // here the ibmiotf disconnect
}

然后在尝试发布时出现此错误:

[BaseClient:connect] Iotfclient is offline. Retrying connection

在那之后,它永远不会连接并给我:

Error : [ApplicationClient:publish] Client is not connected

这背后的原因是什么?

标签: node.jsmqttwatson-iot

解决方案


听起来您的 Watson IoT Platform 客户端无法连接 - 通常如果您错误配置了配置文件(例如,不正确的 API 密钥/令牌),就会发生这种情况。您是否乐意分享配置文件 - 只需混淆任何密码/令牌 - 我们可以寻找明显的问题。


推荐阅读