node.js - 同时使用 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
这背后的原因是什么?
解决方案
听起来您的 Watson IoT Platform 客户端无法连接 - 通常如果您错误配置了配置文件(例如,不正确的 API 密钥/令牌),就会发生这种情况。您是否乐意分享配置文件 - 只需混淆任何密码/令牌 - 我们可以寻找明显的问题。
推荐阅读
- mongodb - 在 MongoDB Compass 中创建聚合表达式
- rest - 在 S3 文件上传事件时触发 Java REST 端点
- python - 我想在一列中找到小于 100 的值,但列的名称有一个空格。我该如何编辑它?
- postgresql - Ecto 以分钟为单位查询两个日期之间的差异
- java - 查询中的 Spark-sql 错误:不支持的 java 类型类 java.util.ArrayList
- python - 如何使用 if 语句来响应几个不同的字符串选项
- javascript - 反应空对象
- sql - 在 SQL Server 中展平频率表?
- node.js - 如何使用节点 js 为服务器端托管 Angular 7 网站
- php - 为什么WordPress在上传图片时会产生双斜线?