【问题标题】:MQTT over Secure Websockets Socket Closed After a Minute - RabbitMQMQTT over Secure Websockets 套接字在一分钟后关闭 - RabbitMQ
【发布时间】:2019-03-12 10:39:48
【问题描述】:

我正在通过 Secure Websockets 连接到一个 MQTT RabbitMQ 实例(Angular 6 使用这个模块,import { Paho } from 'ng2-mqtt/mqttws31')。它连接成功,但套接字连接似乎在一分钟后关闭。 KeepAliveInterval 设置什么并不重要,它似乎总是在一分钟后关闭套接字连接。

这是我的客户端连接:

this.client.connect({ userName: "username", password: "password", onSuccess: this.onConnect.bind(this), useSSL: true, timeout: 60, keepAliveInterval: 6000 });

我不确定问题出在 RabbitMQ 服务器还是 Angular 端。任何帮助将不胜感激!

【问题讨论】:

  • 您是否尝试将 keepAliveInterval 设置为小于 60 秒?阅读 Paho 代码表明它会在“keepAliveInterval”秒内向服务器发送 ping,因此服务器可能会在 60 秒不活动后关闭连接。

标签: angular websocket rabbitmq mqtt paho


【解决方案1】:

尝试将您的 keepAliveInterval 设置为 30。

我怀疑你的 MQTT 服务器默认的 keepalive 设置为 60 秒,这意味着如果在这段时间内它没有与客户端进行任何通信,它很可能会在 60 秒后关闭连接。您设置的 keepAliveInterval 字段最多应与服务器的 keepalive 一样大,因为这决定了客户端在安静连接出现时 ping 服务器的频率。

Here 是 MQTT 规范中定义的 KeepAlive。

【讨论】:

  • 完美!我欠你一块巧克力!!!这两天我一直在挠头。只是为了帮助我,你能指导我找到你提到的部分吗?“阅读 Paho 代码表明它会在 'keepAliveInterval' 秒内向服务器发送 ping”
  • 当然 - 从第 700 到 740 行左右见这里。github.com/eclipse/paho.mqtt.javascript/blob/…
  • 顺便说一句,MQTT 的规范说,当服务器在与客户端建立连接后发回确认时,它可以告诉客户端 keepAliveInterval 应该是什么,客户端必须使用此值它最初指定的内容。 JS 中的 Paho 不这样做....关于拉取请求的白日梦
  • 如何增加我的 rabbitMQ-mqtt 服务器的 keepalive?
猜你喜欢
  • 2022-08-08
  • 2018-06-14
  • 2018-05-10
  • 1970-01-01
  • 2014-01-23
  • 1970-01-01
  • 2021-12-26
  • 2021-06-29
  • 2018-07-27
相关资源
最近更新 更多