gpt4 book ai didi

android - Android 上的 MQTT Eclipse Paho 客户端,断开连接挂起并且永远不会完成

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:33:13 29 4
gpt4 key购买 nike

我在 Android 应用程序中使用 MQTT,使用在 Eclipse Paho 页面上找到的最新 jar。

我通过在 QOS 为 1 的情况下偶尔发送发布来手动检查连接,如果在特定超时时间内未交付,我会断开 MQTT 并重新连接。当数据连接丢失然后恢复时,我也会强制重新连接。

问题是 disconnect 方法挂起线程并且永远不会完成 - 即使超时为零或为负。它应该有 30 秒的内部超时,但它已经超过了这个时间并且永远不会完成。

MqttClient 对象需要断开连接,否则它会在后台吞噬数据。我现在正在做的是分离一个单独的线程以断开 MQTT,然后完全创建一个新的 MqttClient。它停止使用数据,但这是一个糟糕的解决方案,因为新线程只是挂起。

有什么想法吗?

编辑:在进一步调查中,它似乎阻止了在第 70 行尝试停止 CommsReceiver:

public void stop() throws IOException {
synchronized (lifecycle) {
//@TRACE 850=stopping receiver
trace.trace(Trace.FINE,850);
if (running) {
running = false;
try {
//@TRACE 851=stop: wait on lifecycle
trace.trace(Trace.FINE,851);
// Wait for the thread to finish.
lifecycle.wait(); // THREAD HANGS //
}
catch (InterruptedException ex) {
}
}
}
}

最佳答案

如果您使用 paho 存储库的 develop 分支中的代码,问题是由于 paho 客户端的稳定版本中的时间窗口。您不应该遇到此问题,因为它已在此错误中标记为已修复 https://bugs.eclipse.org/bugs/show_bug.cgi?id=394066虽然它不是稳定的分支,但我发现开发分支是可靠的。

关于android - Android 上的 MQTT Eclipse Paho 客户端,断开连接挂起并且永远不会完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13337832/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com