如何在 Android 上通过 websocket 使用 HiveMQ

How to use HiveMQ over websocket on Android

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

HiveMQ and Paho 似乎是最常用的库,所以我现在就试试运气吧。

不幸的是,我在第一个图书馆就到了,需要有关如何继续的提示,因为不幸的是,文档对此没有任何说明。 对于 HiveMQ,我并不完全清楚如何通过 websocket 连接,以及如何自定义我的 credentials/headers,因为我需要添加一些自定义 header,如“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();

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

你好,

迈克尔