微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Android 上通过 websocket 使用 HiveMQ

如何解决如何在 Android 上通过 websocket 使用 HiveMQ

我对 MQTT 比较陌生,正在尝试通过我的 Android 应用程序中的 websocket 进行连接。

HiveMQPaho 似乎是最常用的库,所以我现在就用它们试试运气。

不幸的是,我在第一个图书馆找到了正确的答案,需要一个关于如何继续的提示,因为不幸的是,文档没有对此进行任何说明。 使用 HiveMQ,我不太清楚如何通过 websocket 连接,以及如何自定义我的凭据/标头,因为我需要添加一些自定义标头,例如“x-amz-customauthorizer-name”等等。

这是我在不添加用户凭据的情况下的尝试:

val client = Mqtt3Client.builder()
    .identifier(UUID.randomUUID().toString())
    .serverAddress(InetSocketAddress(result.data.webSocketServer,443))
    .sslWithDefaultConfig()
    .addConnectedListener { context: MqttClientConnectedContext? -> Log.e(javaClass.simpleName,"mqtt Here Connected Yay") }
    .adddisconnectedListener { context: MqttClientdisconnectedContext -> Log.e(javaClass.simpleName,"mqtt disconnected: " + context.cause.message!!) }
    .buildAsync()

client.connect()

解决方法

您只需要将 webSocketConfig 添加到构建器中,如下所示:

        Mqtt3Client client = Mqtt3Client.builder()
            .identifier(UUID.randomUUID().toString())
            .serverAddress(new InetSocketAddress("localhost",443))
            .sslWithDefaultConfig()
this line-> .webSocketConfig(MqttWebSocketConfig.builder().subprotocol("mqtt").serverPath("/mqtt").build())
            .buildAsync();

但我认为您还不能添加自定义标题,请参阅 https://github.com/hivemq/hivemq-mqtt-client/issues/457

您好,

迈克尔

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。