为什么 MQTT 无法与 NodeJS 连接?

2023-11-21

我在尝试连接时遇到一个奇怪的问题MQTT服务器与NODEJS:

如果我连接到MQTT服务器和我没有连接它只是挂起。

如果我使用命令行执行此操作,我会看到数据,因此网络、服务器等都很好。

如果我使用错误的端口,那么命令行会给我一条有效的拒绝消息,但 NODE 只是挂起。

命令行是:

mosquitto_sub -h 10.10.10.30 -p 1883 -t sim 

我的代码是完全基本的:

var mqtt = require('mqtt');

var MQTT_TOPIC          = "sim";
var MQTT_ADDR           = "10.10.10.30";
var MQTT_PORT           = 1883;
var client = mqtt.connect({host: MQTT_ADDR, port : MQTT_PORT, debug: true});

client.on('connect', function() {
    console.log('Connected');
    client.subscribe(MQTT_TOPIC, function() {
        client.on('message', function(topic, message, packet) {
            console.log(topic + ": '" + message);
        });
    });
});

我遇到了同样的问题,并找到了解决方案。我不是 Node.js 专家,所以这只是一个反复试验的例子。也许其他人可以详细说明真正的问题。

这个连接字符串对我有用:var client = mqtt.connect(MQTT_ADDR,{clientId: 'bgtestnodejs', protocolId: 'MQIsdp', protocolVersion: 3, connectTimeout:1000, debug:true});

完整示例如下:

var mqtt = require('mqtt');

var MQTT_TOPIC          = "hello";
var MQTT_ADDR           = "mqtt://192.168.0.105";
var MQTT_PORT           = 1883;

/* This is not working as expected */
//var client = mqtt.connect({host: MQTT_ADDR, port:MQTT_PORT},{clientId: 'bgtestnodejs'});

/* This works... */
var client  = mqtt.connect(MQTT_ADDR,{clientId: 'bgtestnodejs', protocolId: 'MQIsdp', protocolVersion: 3, connectTimeout:1000, debug:true});

client.on('connect', function () {
    client.subscribe(MQTT_TOPIC);
    client.publish(MQTT_TOPIC, 'Hello mqtt');
});

client.on('message', function (topic, message) {
    // message is Buffer
    console.log(message.toString());
    client.end();
});

client.on('error', function(){
    console.log("ERROR")
    client.end()
})

Mosquitto 似乎要求 protocolId 和 protocolVersion 设置如上。 此外,请注意,主机和端口不包含在选项中,而是作为第一个参数给出。

如果我正确地阅读了文档,则主机和端口参数不应作为选项的一部分给出,而应作为选项之前的“服务器”选项给出。看到这个link。我无法从该链接获取语法来工作,但上面的代码行似乎是窍门。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 MQTT 无法与 NodeJS 连接? 的相关文章

  • 使用 ObjectId 键和字符串数组定义映射作为 mongoose 模式中的值

    我在为数据库创建 Mongoose 架构时遇到问题 我想创建一个以 objectId 作为键 以字符串值数组作为值的映射 我能得到的最接近的是 var schema new Schema map myId type mongoose Sch
  • 计算两点之间的最短路线

    过去几周我一直在开发一款多人 HTML5 游戏 使用nodejs and websockets 我已经被这个问题困扰了一段时间 想象一下 我用数组实现了这个平铺地图 如下所示 1 or 棕色瓷砖 路上有障碍物 玩家无法通过 0 or 绿色瓷
  • Node 不断恢复到旧版本

    每次我在控制台中重新启动 vagrant 时 它都会询问我的登录详细信息 然后说Now using node v7 10 0 npm v4 2 0 当我做run nvm install node I get v13 11 0 is alre
  • 电子应用程序可以播放本地支持的任何视频吗?

    我知道浏览器通常会限制玩家mp4 and webm类型的媒体 但我想知道基于电子的应用程序是否可以运行 MKV 和 AVI 等格式的本地视频 我找不到明确的来源来告诉我什么是可用的 什么是不可用的 Electron 仍然仅限于网络技术 这意
  • 简单 AJAX Get 请求“待处理”

    我正在尝试实现一个简单的 AJAX GET 请求 该请求告诉服务器删除数据库中的文档 虽然我从服务器得到文档已删除的确认 但 Chrome 检查器显示该请求处于 待处理 状态 最终导致服务器错误 我做错了什么 HTML div class
  • dyld:惰性符号绑定失败

    当我尝试运行时遇到一个奇怪的错误gatsby develop在新创建的 gatsby 项目中 这不应该与 gatsby js 静态站点生成器 有任何关系 因为我在不同的场合也遇到了相同的错误 当我跑步时gatsby develop在我的一个
  • Node.js 上的 starttls > 0.4.0

    我遇到了这个线程Node js HTTPS 安全错误 https stackoverflow com questions 5136353 node js https secure error其中提到 tls 模块是现在在节点上执行 TLS
  • 将消息从 AWS Lambda 发布到 AWS IoT

    我正在尝试使用 Nodejs 将消息从 AWS Lamba 发布到 AWS IoT 我已压缩该项目并上传到 AWS IoT 下面是代码片段 var awsIot require aws iot device sdk var device a
  • 如何防止 gulp-notify 破坏 Windows 中的 gulp-watch?

    我正在使用吞咽通知 https www npmjs org package gulp notify插入 这是我如何在 gulpfile js 中实现它的示例 您可以看到我也在使用 gutil 和 livereload 我不知道它们是否发挥任
  • GraphQL 预期可迭代,但未找到字段 xxx.yyy 的迭代

    我目前正在尝试使用 NodeJS 进行 GraphQL 但我不知道为什么以下查询会出现此错误 library name user name email 我不确定是否type of my resolveLibrary是对的 因为在任何例子中我
  • 如何导入和导出 javascript ES6 类

    我是 javascript 和 nodejs 的新手 我正在使用这个项目来发展我的技能并学习新技术 目前我的项目使用多个相互依赖的类 类文件位于不同的目录中 我当前正在尝试使用 export 和 require 语句来允许在其他文件中引用类
  • 当尝试将 formData 发送到 Express js 时,服务器无法识别 multipart/form-data

    我正在尝试将表单数据上传到快递服务器 在我的 Express js 服务器上 我有以下内容 router post uploads id function req res res send req body const title req
  • 构建:找不到“节点”的类型定义文件

    VS 2015 社区版 在家 npm 3 10 Angular 2 我试图在 ASP Net MVC 5 应用程序中获取 Angular2 设置 我开始使用的模板使用旧版本的 Angular 因此我更新了包引用 当我构建时 列表中的第一个错
  • 一次更新猫鼬中的多个文档

    我有一个用户文档数组 每个用户都有关注者属性 它是一个数字 我只想将此属性增加 1 然后立即更新数据库中的所有这些用户文档 更多细节 在请求中 我有一组用户 id 我使用这些 id 进行查询以获取一组用户文档 const users awa
  • Docker - SequelizeConnectionRefusedError:连接 ECONNREFUSED 127.0.0.1:3306

    我正在尝试使用 Docker 容器启动并运行我的 Nodejs 应用程序 我不知道可能出了什么问题 当我使用控制台调试凭据时 凭据似乎已正确传递 另外启动sequel pro并使用相同的用户名和密码直接连接似乎也可行 当节点在容器中启动时
  • 在 Node.js 中解析 Json(带有数组和对象)并将数据导出到 Excel 文件中

    我是 Node js 新手 我的要求是 我需要解析 JSON 并将数据导出到 Excel 文件中 其中包含 JSON 中的所有字段 我的 JSON 如下 id 1255 title The Brain and Nervous System
  • 下载 csv 文件 node.js

    我正在使用 node js 构建一个应用程序并尝试将数据下载为 csv 文件 我正在使用 json2csv https www npmjs com package json2csv https www npmjs com package j
  • 纤维/未来实际上有什么作用?

    下面这行代码的作用是什么 Npm require fibers future 我在网上查找示例 发现了一些这样的示例 Future Npm require fibers future var accessToken new Future 什
  • 如何获取nodejs程序中的nodejs版本?

    In a Node js 的调试器 https github com rocky trepanjs 有一个命令显示V8版本和调试器包版本 如何获取nodejs版本 我想我基本上可以运行命令node version or nodejs ver
  • 如何在查询语句之外从mysql查询中获取值?

    这是下面的函数console log function quo value value connection query SELECT role from roles where id 1 function error results fi

随机推荐

  • 如何设置状态 UIControlStateHighlighted 的按钮标签文本颜色

    我正在创建一个 iPhone 应用程序 其中有一个自定义按钮 我通过创建标签并将其添加为子视图来设置按钮标题 现在 当按钮突出显示时 我想更改标签文本颜色 这是我的代码 UIButton button1 UIButton buttonWit
  • 在 Django 模板中使用变量作为字典键

    我想在 Django 模板中使用变量作为字典中的键 我一辈子都不知道该怎么做 如果我有一个带有名称或 ID 字段的产品 以及带有产品 ID 索引的评级字典 我希望能够说 for product in product list h1 rati
  • 如何使用本地未发布的 crate?

    我做了一个图书馆 cargo new my lib 我想在不同的程序中使用该库 cargo new my program bin extern crate my lib fn main println Hello World 我需要做什么才
  • webview不会在链接点击时加载pdf文件

    我开发了一个 Web 应用程序 可以显示托管在 Web 服务器上的 pdf 文档列表 这个应用程序嵌入在 Android 的 webview 应用程序中 但是当我在手机上加载该应用程序时 选择 pdf 链接不会执行任何操作 我究竟做错了什么
  • 更改 Android 中选定列表项的布局

    我需要创建一个ListView并仅显示所选行的更详细布局 以便向客户显示更多信息 我尝试过的如下 newsListView setAdapter new NewsListAdapter this news newsListView setO
  • 使用 Electron 访问 Angular 2 应用程序中的文件系统

    我知道 Angular 2 是在 Web 浏览器上运行的 它无法访问文件系统 但是 我使用 Electron 作为前端 并通过 Electron 运行应用程序 build electron ng build base href cp src
  • “AL lib: alc_cleanup: 1 设备未关闭”是什么意思?

    我正在尝试让自己融入 Libgdx OpenGL 框架 我用过LwjglApplication用于创建一些简单的应用程序来渲染盒子 一些网格和一些纹理 我发现了 Aurelien Ribon 的应用程序 它可以创建刚性 Box2D 实体 他
  • 如何为通用 Windows 应用程序设置固定窗口大小

    我刚刚开始在 VS2015 Community Edition 中开发通用 Windows 应用程序 我使用了名为 PieCharts for Windows UWP 的示例 我的问题是 我想将窗口大小固定为 400x650 就像我在旧桌面
  • URI 中方案后面的双斜杠的语义是什么?

    根据https www rfc editor org rfc rfc3986 and http en wikipedia org wiki Uniform resource identifier URI 可能包含也可能不包含方案标识符后面的
  • 为什么部分视图在 MVC 5 Visual Studio 13 中显示为整页?

    我尝试使用以下命令在 ASP Net MVC 5 Visual Studio 13 中用部分视图替换页面的一部分 视图 Book Index cshtml div Ajax ActionLink Click here for the Bar
  • JPQL:SELECT NEW 查询中的枚举文字

    我有一个用于几个域类的描述符类 描述符类有一个字段 type 它是一个枚举 指示域类的类型 在某些查询中 我想返回一个或多个描述符并将类型作为构造函数参数传递 所以我的想法是将它作为查询参数传递 String jpql SELECT NEW
  • 在Xcode 6中,如何使用硬件键盘但在iOS模拟器中显示软件键盘

    在 Xcode 6 中 iOS 模拟器似乎要么不显示键盘 这意味着您可以键入但看不到软件键盘的位置和效果 要么显示软件键盘 这意味着您可以在屏幕上看到它 但不能不要在上面打字 用鼠标在软键盘上打字真的很慢 如何恢复旧的行为 即您可以看到软件
  • 是否可以将尺寸设置为独立于地图缩放级别的 groundOverlay?

    我有一个GroundOverlay on my GoogleMap我希望当我放大 缩小地图时它的尺寸不会改变 与默认地图完全相同markers始终保持其尺寸 我尝试过两种形式GroundOverlay setDimensions 但图像仍然
  • django-auth-ldap 安装不起作用

    我试图在我的 Windows 系统中安装 django auth ldap 它显示以下错误 pip build 3x6rkxb4 pyldap modules errors h 8 致命错误 C1083 无法打开包含文件 lber h 没有
  • python - 如何使用popen管道输出?

    我想要pipe我的文件的输出使用popen 我怎样才能做到这一点 test py while True print hello a py import os os popen python test py 我想使用管道输出os popen
  • 为什么在主机上执行“ps aux”时可以看到 docker 容器进程?

    来自主持人 ps aux grep java me my host elastic search group ps aux grep java smmsp 20473 106 6 3 4664740 257368 Ssl 17 48 0 0
  • 缓存 AJAX 请求

    我正在向 PHP 应用程序发送 AJAX GET 请求 并希望缓存请求返回以供以后使用 由于我使用 GET 这应该是可能的 因为不同的请求请求不同的 URL 例如 getHTML php page 2 和 getHTML php page
  • numpy 中唯一元素的分组索引

    我有许多大型 gt 100 000 000 整数列表 其中包含许多重复项 我想获取每个元素出现的索引 目前我正在做这样的事情 import numpy as np from collections import defaultdict a
  • iFrame onload JavaScript 事件

    我有一个 iFrame 我想在加载后向其中发送 JavaScript 命令 我当前的代码如下所示 但使用此代码时 命令不会执行 我必须改变什么才能让它发挥作用 仅需要支持 Chrome 和 Firefox 使用 iFrame 的 onloa
  • 为什么 MQTT 无法与 NodeJS 连接?

    我在尝试连接时遇到一个奇怪的问题MQTT服务器与NODEJS 如果我连接到MQTT服务器和我没有连接它只是挂起 如果我使用命令行执行此操作 我会看到数据 因此网络 服务器等都很好 如果我使用错误的端口 那么命令行会给我一条有效的拒绝消息 但