问题标签 [paho]

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 投票
0 回答
812 浏览

python - Paho Python 客户端遇到套接字读取错误,随后与代理断开连接

客户端详情:Paho MQTT Python 客户端从http://git.eclipse.org/gitroot/paho/org.eclipse.paho.mqtt.python.git获取,SHA id 300fcbdffd62d08f627f94f3074463cfa532ca87

代理详细信息:带有 MQTT 插件的 RabbitMQ 3.3.4

在第一种情况下,一切都在启用 SSL 的情况下在本地运行。我正在以一种方式使用客户端,其中我有一个单独的进程来发布消息(> 10000 条消息)并且不等待发布之间的确认。该错误是 self._ssl.read(1) 从 client.py 中的 _packet_read 的以下代码片段返回零长度值的结果:

并且在接收并解析来自 RabbitMQ 的 25 个确认之后发生。在此错误之后,我不再收到经纪人的任何回复。

如果我在禁用 SSL 的情况下运行,我不会遇到任何错误,并且可以成功接收所有已发送消息的确认。

如果我远程运行代理(互联网上的某个位置),我会通过 SSL 获得相同的结果。但是,当不使用 SSL 时,我会以不同的时间间隔收到读取错误/断开连接,但客户端能够恢复/重新连接,并且我会收到所有已发送消息的代理确认。

这是我正在使用的客户端配置:

关于可能导致此问题的原因和/或故障排除建议的任何想法?

更新 20140828:我正在单步执行 loop_read 并注意到在成功接收到第一个完整数据包(连接确认)后我得到了一个空的套接字返回值。在 socket.recv 调用之前的 select 调用表明有数据准备好在套接字上读取。这可能是套接字缓冲区问题吗?我不确定 Python 套接字接收缓冲区的行为(顺便说一句,我在 OSX 上运行它)是否溢出。

0 投票
1 回答
2975 浏览

javascript - 使用 paho mqttws31.js 接收二进制文件

我正在使用 paho: http: //www.eclipse.org/paho/clients/js/ lib 连接到 mqtt-broker。但是当我通过 websockets 接收二进制数据时,它说我的数据格式错误:错误:AMQJS0009E Malformed UTF data:d4 -3f。. 是否可以使用 paho mqttws31.js 接收二进制文件

编辑:不幸的是,我使用 (message.payloadString) 来获取收到的消息。但据我了解(https://github.com/i5ting/paho.mqtt.javascript/blob/master/src/mqttws31.js#L2060)也可以使用message.payloadBytes。

所以实际上我发送的是 Doubles,每个都有 8 个字节。如何在 message.payloadBytes 中访问它们?

谢谢。

0 投票
2 回答
2627 浏览

spring-integration - Spring Integration MQTT Subscriber (paho) 停止处理消息

我们的一个 MQTT 订阅者在 Spring 集成中遇到问题(4.0.3.RELEASE 在 Tomcat 7 上运行,带有 Paho MQTT Client 0.4.0)。

问题出在订阅者使用大量使用的主题(大量消息)上。向主题发送消息的设备是通过 GPRS 连接的现场设备。

Spring 集成和代理(Mosquitto)在同一台服务器上运行。

在未重新启动服务器的情况下在 Tomcat 上进行了几次重新部署后,似乎出现了该问题。出现问题时,重新启动 tomcat 实例会修复一段时间。

这是事件链(来自蚊子日志。vdm-dev-live订阅者是有问题的人):

开始 spring 集成时,我们看到所有订阅者都连接到各种主题:

我们看到消息来回传递

我们看到来自各个订阅者的 ping 请求

但突然间,我们看到了这一点:

到那时,订户已经死了。我们没有看到任何 ping 请求,并且它不再处理来自该主题的任何消息。在代理级别上,一切都很好,因为我有调试日志订阅者(使用 NodeJS),我看到这些订阅者仍在处理来自该主题的消息很好(所以问题出在订阅者级别)。

在 tomcat 日志中,我们还可以看到:

但是 Paho 不会对此订户进行任何清理/重新启动。

我也在 Tomcat 日志中看到了这一点:

我还注意到该订阅者的许多线程在关机时卡住了。

知道是什么原因造成的以及如何预防吗?

0 投票
1 回答
2176 浏览

javascript - 未通过 paho mqttws31.js 在移动 Web 客户端上接收 mqtt 消息

我使用 paho mqttws31.js ( http://www.eclipse.org/paho/clients/js/ ) 通过 web 应用程序中的 websockets 接收 mqtt 消息。在具有不同浏览器(chromeium、firefox ...)的电脑上,一切都非常顺利,没有任何错误。但是,当我在移动设备(如平板电脑或智能手机)上使用完全相同的源代码时,我不会收到保留的消息。当我连接到代理时,我在 onSuccess 回调中订阅了一些保留的主题。但我大部分时间都没有收到保留的消息。如前所述,这只发生在移动设备上。

提前致谢。

0 投票
2 回答
5579 浏览

python - 使用 Mosquitto/Paho for Python 无法接收超过 20 条 MQTT 消息

我正在使用 Mosquitto(现为 Paho)python MQTT 客户端连接到 HiveMQ 代理。代码非常基本,取自他们的文档 - https://pypi.python.org/pypi/paho-mqtt

正如您在 client.subscribe() 中注意到的,QoS 为 2。这是对官方文档代码的唯一修改。

发布客户端的代码是-

在这里,QoS 也是 2。

这种对 QoS 的修改导致订阅者只接收到 20 条消息。经过进一步探索,我意识到问题可能是由于max_inflight_messages_set(),这是一个选项函数,它设置 QoS>0 的最大消息数,可以同时通过它们的网络流。默认值为 20。

但是,将其更改为任何其他值都不起作用。另外,为什么客户认为这些消息在收到时仍然在进行中?我该如何解决问题?我如何确保客户理解这些消息不是“飞行中”并且已经传递?

0 投票
1 回答
13152 浏览

python-2.7 - 在树莓派中为 Python 使用 mqtt paho

我正在尝试使用 raspbian 中的 python 2.7 连接到消息代理,如下所示:

当我运行脚本时,我收到以下错误:

回溯(最后一次调用):文件“ejemlo.py”,第 27 行,在 client=paho.Client() 文件“/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py ”,第 410 行,在init self._sockpairR,self._sockpairW = _socketpair_compat() 文件“/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py”,第 255 行,在 _socketpair_compat 监听.bind(("localhost", 0)) 文件“/usr/lib/python2.7/socket.py”,第 224 行,方法返回 getattr(self._sock,name)(*args) socket.error: [ Errno 99] 无法分配请求的地址

我该如何解决?

0 投票
1 回答
2033 浏览

mqtt - HiveMQ 2.1.0 + Eclipse Paho javascript mqttws31.js 的 Websocket 连接错误

在 Google Chrome 上将 mqttws31.js 作为 HTML 文件的一部分执行时,我遇到了以下错误。

HiveMQ 用作 MQTT 代理,日志如下

当 HTML 文件包含 MQTT 客户端时,遇到以下错误。

解决此问题的任何帮助表示赞赏。

0 投票
1 回答
3308 浏览

python - 使用 Django 时如何处理 mqtt loop_forever 函数?

我正在开发一个网站并使用 Django 进行开发。我有一些使用 MQTT 与网站通信的设备,我计划使用 paho-mqtt 客户端。我的问题是,为了让 paho-mqtt 起作用,我必须调用一个永远循环的函数,而 paho-mqtt 继续侦听消息。调用这个循环并将其包含在它自己的线程中的最佳方法是什么?

我可以创建一个新线程,还是应该使用芹菜之类的东西?

0 投票
0 回答
209 浏览

rabbitmq - RabbitMQ/MQTT - 不正确的内存高警报

我正在尝试将大量客户端(基于 eclipse paho)连接到 MQTT 代理。

我经常看到不正确的高内存水印集会减慢连接到代理的订阅者的速度。

这开始在大约 10k 连接时发生,并减慢进一步的连接。此时所有 rabbitmq 进程报告的 %mem 小于 8GB RAM 的 30%。

我启用了 hipe compile,但即使没有,情况也是如此。

所有订阅者都connect()在线程池上执行方法。

我有不同的没有。在 20、100、200、20 或更低的线程中,%cpu 是正常的 ~ 60-80,在 100 及以上时,我有时会看到 ~ 200-300。即使没有。连接数不会增长(变化〜10K)。

此时我还看到订阅者抛出以下错误。这是否意味着经纪人因超载而停滞不前?

在编写客户端/服务器配置时我需要满足什么?

谢谢 ...

0 投票
1 回答
415 浏览

mqtt - 关于 MQTT 固定头结构?

我正在尝试实现一个MQTT库。根据教程,MQTT消息的固定标头应如发布的图片所示。

同样在同一个教程中,我发现fixed header的编码方式是这样写的:

我的问题是,根据发布的固定标头规范,字段,retain和the should have ,和bits 分别。qosdupmsg type1214

为什么该msg type字段扩展为 5 位 "<<4" 并且该字段dup扩展为4 bits"<<3" ?

Fixed_Header 在此处输入图像描述