修复 PAHO JS + Activemq 中的 AMQJS0008I 套接字关闭错误

Posted

技术标签:

【中文标题】修复 PAHO JS + Activemq 中的 AMQJS0008I 套接字关闭错误【英文标题】:Fixing AMQJS0008I Socket closed error in PAHO JS + Activemq 【发布时间】:2016-07-04 07:33:23 【问题描述】:

有时我在onConnectionLost 上经常收到AMQJS0008I Socket closed 错误。我正在使用最新的 Activemq 版本。

发生这种情况是因为收到了一些格式错误的消息吗,因为有时它会很好地传递所有消息,有时在它们之间会显示错误

【问题讨论】:

是的似乎是格式错误的消息,因为 AWS IOT 核心的消息最终很好,它们需要是格式良好的对象,我正在处理,一旦我解决它就会发布答案 【参考方案1】:

就我而言,问题在于我试图将 PAHO 客户端连接到 MQTT 代理,但代理未配置为接受 Web 套接字 (WS://)。

解决方法:编辑 mosquitto.conf 并添加:

listener 9001
protocol websockets

listener 1883
protocol mqtt

【讨论】:

【参考方案2】:

当我登录的用户无权访问我尝试订阅的主题时,我收到了此消息。

尝试最简单的解决方案是确保与您的 MQTT 客户端连接的用户有权在客户端订阅时读取该主题。如果客户端尝试发布,请确保用户有权写入该主题。

如果您已经添加了必要的权限,请确保您输入了正确的主题名称。

【讨论】:

拥有权限是什么意思?你能给我一个代码示例吗?您的意思是仅仅订阅一个主题并简单地发送到该主题吗?我没有通过安全连接或身份验证使用 mqtt,所以无法理解是否还有另一个“权限”层,因为我找不到解决方案,请用一个例子指出我正确的方向,因为我被卡住了这几天现在ta 所以这个问题发生在我身上,因为我在我的 cloudmqtt 服务器上创建了一个用户,但没有授予该用户发布/订阅特定主题的权限。在 CloudMqtt 上查找“用户和 ACL”。您可以使用其他客户端连接,例如 MqttLens Google Chrome 扩展程序吗? 啊,我确实在这方面孤立了自己,今天早上与我的初级开发人员讨论客户端代码时,我意识到两个客户端都设置了相同的 ID,这是我的问题......橡皮鸭效应...... .

以上是关于修复 PAHO JS + Activemq 中的 AMQJS0008I 套接字关闭错误的主要内容,如果未能解决你的问题,请参考以下文章

如何通过javascript 使用 MQTT

Mosquitto 和简单的 Paho JS 客户端

phpMQtt和paho.mqtt.js通过ssl协议链接moquitto

使用 Paho MQTT Js 成功连接到 Mosquitto 代理后突然断开连接

js 连接mqtt

Android WebView 和 WebSockets / Paho.MQTT