断开连接后,客户端会无限期地尝试重新连接,除了"CLIENT_ERROR"外没有其他原因。

0

【以下的问题经过翻译处理】 我使用iot进行聊天应用程序,并且只有最近开始出现一个问题,当客户端超时和断开连接时,例如用户切换标签页并且Chrome限制连接和/或超出保持活动状态,客户端将开始尝试重新连接,这是正常行为。

然而,与以往不同的是,现在当客户端尝试重新连接时,它会失败并立即断开连接,从而开始无休止的重复循环:连接->断开连接->重新连接->重复。

我已经检查了aws iot日志,我所看到的只有“CLIENT_ERROR”,没有其他断开的原因。

我找到了一个看起来非常熟悉的github问题:https://github.com/mqttjs/MQTT.js/issues/781

按照我的应用程序架构,客户端在断开连接时可以有多达10-15个订阅活动。

是否存在每次重新连接的8个订阅限制?如果是这样,我该如何缓解这种情况?如果不是,可能是什么问题,或者我该如何获取更多关于它无法重新建立连接的信息?

我不确定它是否是我端口(使用mqtt.js)上的问题,还是我不知道的iot限制。 需要以某种方式缓解!

profile picture
专家
已提问 5 个月前10 查看次数
1 回答
0

【以下的回答经过翻译处理】 每个订阅请求有8个订阅限制,所以这可能是问题所在。你提到了日志文件,日志的详细程度是什么?如果将日志级别更改为“DEBUG”,您可能可以看到更多详细信息,但如果您尝试在单个调用中订阅超过8个主题,则这可能是原因。

最简单的方法是更改您的代码,通过遍历您的主题订阅并进行单独的调用,限制为8个主题。由于它可以在初始会话中工作,那么在重新连接期间逻辑是否不同?

另一种方法是使用持久会话。这将允许您的初始连接订阅主题列表(每个请求限制为8个),但当您重新连接 IoT Core时,所有订阅将自动恢复。

此外,AWS IoT设备SDK具有很多内置逻辑(以及MQTT 5支持!)。如果可能,使用JavaScript SDK可能有助于解决这个问题。

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则