Android MQTT - Paho不支持wss://

时间:2016-08-22 03:31:12

标签: java android websocket mqtt paho

我正在使用Paho Android客户端。 https://eclipse.org/paho/clients/java/

这可能是在Android上访问MQTT的库,但它不支持安全的MQTT websockets(wss://),为我提供了服务器uri的IllegalArgument异常。

我一直在寻找一种连接到我的MQTT websocket的解决方案,它有一个wss://路径方案,到目前为止只有一个库: https://github.com/inventit/mqtt-websocket-java

哪个也行不通!我收到Jetty SSL例外。

如果您之前使用的是实施方式,请与我分享,这需要花费我很多时间,而且我还是一无所知,谢谢! < / p>

对于这两个图书馆,我都尝试使用他们在文档中提供的示例代码。

2 个答案:

答案 0 :(得分:0)

我认为Paho Android Client不支持websocket ssl,但您可以使用MqttAsyncClient代替MqttAndroidClient:

库是相同的:

    dependencies {
    ...
    compile 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.1.0'
    compile 'org.eclipse.paho:org.eclipse.paho.android.service:1.1.0'
    ...
    }

使用MqttAsyncClient代替MqttAndroidClient,如下所示:

private MqttAsyncClient mMqttAndroidClient;
try {
      mMqttAndroidClient = new MqttAsyncClient("wss://...", MqttClient.generateClientId(), new MemoryPersistence());
    } catch (MqttException e) {
      e.printStackTrace();
    }

答案 1 :(得分:0)

我使用了“WSS://”没有任何问题。使用“WSS”模式和端口443创建MqttAndroidClient对象。

mqttConnectOptions = new MqttConnectOptions();
    mqttConnectOptions.setKeepAliveInterval(MqttConfig.KEEPALIVE);
    mqttConnectOptions.setUserName("username");
    mqttConnectOptions.setPassword("pass");
    mqttConnectOptions.setCleanSession(false);
    mqttConnectOptions.setAutomaticReconnect(true);
    mqttConnectOptions.setMaxInflight(1024);
    ..
    uri="wss://broker.hivemq.com:443"
    MqttAndroidClient client = new MqttAndroidClient(context, uri, clientId,persistence);
    ..
    getClient().connect(mqttConnectOptions,applicationContext,mqttActionListener;