问题描述
我对 MQTT 比较陌生,正在尝试通过我的 Android 应用程序中的 websocket 进行连接。
HiveMQ 和 Paho 似乎是最常用的库,所以我现在就用它们试试运气。
不幸的是,我在第一个图书馆找到了正确的答案,需要一个关于如何继续的提示,因为不幸的是,文档没有对此进行任何说明。 使用 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。
您好,
迈克尔