Mqtt Android Paho客户端连接问题

5t7ly7z5  于 2022-12-02  发布在  Android
关注(0)|答案(2)|浏览(300)

嗨,我正在使用Android paho库与mqtt服务器连接。
我的应用级别Gradle端代码:

implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.1.0'
implementation 'org.eclipse.paho:org.eclipse.paho.android.service:1.1.1'

项目层级
所有项目{

repositories {
        jcenter()
        maven {
            url "https://repo.eclipse.org/content/repositories/paho-snapshots/"
        }
        maven { url "https://jitpack.io" }
        maven {
            url "https://maven.google.com"
        }
    }
}

在清单文件中

<service android:name="org.eclipse.paho.android.service.MqttService" />

许可

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

我的问题是,当我的服务器URL为 tcp://:1883 时,我可以连接、发布数据和订阅主题
当我将我的url更改为 mqtts://:8883 时,无法获得连接
那么,tcp://mqtts://mqtt:// 方案之间的区别是什么?如果方案以 mqtt * 开头,为什么我无法连接?
请帮帮忙!!!

jaxagkaj

jaxagkaj1#

tcp://hostname:1883mqtt://hostname:1883完全相同。
mqtts://hostname:8883是基于TLS的MQTT,需要正确配置代理以支持端口8883上的TLS连接。
如果没有详细的错误时,它无法连接,我们可以说什么。

a1o7rhls

a1o7rhls2#

仅供参考-为了使用基于TLS/SSL的Paho Android客户端,我发现遵循此示例非常有价值:https://www.emqx.com/en/blog/android-mqtt-ssl-tls-authentication
不幸的是,有一个很小但却很重要的信息缺失,那就是如何正确地更改MQTT代理URL -为此,我花了大量的时间进行搜索,最后在这里找到了这个宝贵的信息:https://www.thethingsnetwork.org/forum/t/cannot-connect-to-mqtt-broker-over-tls-port/48316
因此,使用上面提到的“mqtts://hostname:8883”无法test.mosquitto.org使用其网站上提供的CA证书进行简单的测试连接到www.example.com。
最后,它使用“ssl://test.muscitto.org:8883”连接
最可怕的(也是最耗时的)方面是,失败是无声的--Android Studio LogCat上没有显示任何内容,没有抛出异常,什么都没有。
我敢肯定,对于所有的程序员,即使是最少的互联网/堆栈经验,这是如此明显,你必须改变'tcp'到'ssl'每当你改变1883到8883,但不是一个noob -这是一个痛苦的教训,要记住。

相关问题