问题标签 [mosca]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
644 浏览

node.js - 如何将我们的回调函数连接到 mosca 验证方法?

在上面的代码中,我在此 mqtt 客户端的选项中提供用户名和密码。

authenticate函数的服务器端,我需要在客户端连接一个回调,该回调在那里被调用为callback(true).

0 投票
1 回答
594 浏览

docker - 通过 Dockers 中的 Nginx 将 mqtt.js 客户端连接到 Mosca Broker(相同的 Docker-compose)

我有:

  • 1 MongoDB
  • 2 Mqtt Mosca 经纪人
  • 2 NodeJS 应用程序都与 mqtt.js cient
  • 1个

Nginx loadbalance 和 proxy_pass 都将 http 和 mqtt 分别传递给 NodeJS 应用程序和 Mqtt Mosca Brokers,

所以我有:

mqtt Sensors -> nginx -> Mqtt Mosca Brokers“流”正常工作

浏览器 -> nginx -> NodeJS App“流程正常”

我无法做的是让 NodeJS 应用程序(mqtt.js 客户端部分)通过 nginx 连接到 Mqtt Mosca Brokers,类似于:

NodeJS (mqtt.js 客户端) -> nginx -> Mqtt Mosca Broker。

奇怪的是,如果我尝试:

NodeJS(mqtt.js 客户端)-> Mqtt Mosca Broker 流程​​正常工作

我有以下配置:

码头工人-compose.yml

nginx.conf(摘录)

基本上,如果在我使用的 NodeJS 应用程序中:

它有效,但如果我尝试:

没有任何效果,有人可以帮忙吗?

0 投票
0 回答
165 浏览

node.js - 如何将相同的消息广播到 Mosca 中的多个接口

我有 2 个接口,一个 mqtt 和一个用于 websocket。我注意到如果我有后端,mqtt 不会路由到 websocket。

我创建了 mosca 服务器,如下所示:

我需要做什么才能在所有 3:mqtt、websocket 和后端之间进行路由?

谢谢!

0 投票
1 回答
428 浏览

node.js - 绑定 Mosca 监听 IP 地址?

有没有办法专门监听特定 IP 地址/主机名上的传入网络连接?最好通过在代码中动态传递 ip 地址/主机名,而不是编辑配置文件。

在 Mosca 的文档中找不到对此的参考 - http://www.mosca.io/docs/这就是我发布的原因。

谢谢你的时间。

0 投票
0 回答
5447 浏览

node.js - 正在尝试 MQTT 连接...失败,rc=-2 5 秒后重试

我正在尝试与我的电脑(node.js、express、Mosca)和 Esp8266 上的本地 MQTT 服务器建立 MQTT 通信。

esp8286 没有连接到我的服务器,错误是

正在尝试 MQTT 连接...失败,rc=-2 5 秒后重试

无法连接到经纪人。

这是节点js代码:

这是 Esp8266 代码

0 投票
1 回答
3551 浏览

node.js - TypeError: Client is not a constructor - 最新版本的 kafka-node 出错

Mosca 给出了这个错误:

环境

  • 节点版本:v10.9.0
  • Kafka节点版本:最新
  • Mosca 版本:最新

我试过的

我打开/home/x/Desktop/broker/node_modules/mosca/node_modules/ascoltatori/lib/kafka_ascoltatore.js 并查看下面的行后发现问题与 kafka-node 版本有关:

当我删除this._opts.kafka时,它开始正常工作。然后我打印了两个我发现新版本中没有客户端构造函数。这是我的打印结果:

this._opts.kafka (kafka-node v4.0.1 latest)返回没有客户端的 HighLevelProducer,另一方面 require("kafka-node") (v0.5.9) 返回 HighLevelConsumer。

代码:

如上所述,我可以让 Kafka 与旧版本一起使用,但我认为这只是一个快速修复,所以我希望有人能引导我找到正确的解决方案。

0 投票
0 回答
925 浏览

node.js - npm install mosca fail 错误:`make` 失败,退出代码:2

当我尝试 npm install mosca 时,出现错误。

我尝试了不同的方法,例如删除 .node-gyp 和 .npmrc,但它不起作用。

节点:v8.15.0

npm:6.4.1

0 投票
1 回答
776 浏览

ssl - 如何在没有证书的客户端的情况下为 mqtts 配置 Mosca?

我有一个在节点实例上运行的 Mosca MQTT 代理,我想用 SSL/TLS(MQTTs 协议)加密所有传入的通信,但客户端不必将任何证书链接到连接(我猜它与 self -签名证书)就像 https 一样。我希望我的所有客户端只使用指定 MQTTs 协议的凭据进行连接,并且可以加密通信。我之前正在使用 Amazon MQ,它就是这样工作的,所以我想要同样的。

我不知道如何正确配置 Mosca 来做到这一点,我不知道我必须使用什么样的证书。

  • 我在配置中添加了安全字段,如下所示

  • 对于证书,我尝试创建一个自签名证书,如此处所示

  • 我还尝试使用为我的域名注册的 certbot 证书(Let's Encrypt):mq.xxx.com。

我在 ec2 (ubuntu 18) 上运行所有东西,我的网络和防火墙对 1883 和 8883 开放。我的密钥和证书位于我的项目的根目录,其中守护程序以良好的权利和所有权运行。我知道我的实例可以正确访问它们。

我的服务器正在端口 1883 上运行并使用简单的 mqtt,但是当我尝试使用端口 8883 上的客户端连接 ssl/tls 时,指定服务器使用自签名证书(我尝试使用 MQTT.fx)它失败说:“无法找到请求目标的有效认证路径”

我无法解决这个问题,我认为客户端无法“接受”或“验证”提供的证书。也许我向 Mosca 提供了错误的密钥或证书,但每个生成的 openssl 或 certbot 只有一个。也许我创建错了,但我遵循了很多关于同一主题的教程,比如这个

我需要办什么证书?

他们还有什么关系吗?

谢谢你。

0 投票
1 回答
96 浏览

javascript - 如何在“已发布”回调中访问客户端对象?

我使用 Mosca 作为带有蚊子后端的嵌入式 MQTT 代理。我主要使用 Mosca 作为一种身份验证机制,它可以读取 jwt 令牌并从中提取一些值。我创建了自己的授权者来读取 mqtt 密码字段中的 JWT 令牌并对其进行解码/验证。解码后,我将解码后的字段添加到客户端对象,如下所示

我想访问回调decoded_token中的值,published如下所示

不知何故,上面的代码无法按预期工作。我收到以下错误:

TypeError:无法读取未定义的属性“decoded_token”

而如果不是console.log(client.decoded_token)我使用console.log(client),它可以工作,我可以看到decoded_token客户端对象中的值。

我有两个问题。

  1. 为什么上面的代码不起作用?
  2. 当我在客户端对象中存储一个值时,该值是传递给客户端(传感器),它可以随后续请求一起发送还是仅存储在本地内存中?

我是 MQTT 的新手,所以如果问题太天真,请原谅:)

0 投票
0 回答
170 浏览

typescript - 单元测试后关闭 Mosca 代理会引发错误

我在 Node.js 上使用 Mosca 和 TypeScript,并编写了一个自定义代理来满足我的需求。

当我单独测试我的方法(使用 Jest UT 库)时,一切似乎都运行良好,直到测试结束,我收到以下错误:

这是我的 broker.ts 的样子:

这是我的 broker.spec.ts 测试文件:

如您所见,我正在尝试new Broker使用afterAll语法关闭我在开头创建的 MQTT 服务器。但是,由于某种原因,我收到此错误。

值得注意的是,我尝试broker.server.close()在实际测试中使用,每当客户端连接到我的代理时,我都会调用该方法,并且它运行良好,当我要求服务器关闭时,它正在关闭。

我想知道我在这里做错了什么。该错误使我认为服务器已经关闭,但我不明白如果我不告诉它停止为什么会这样。