Android MQTT - Paho 不支持 wss://



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

这可能是Android上MQTT的去库,但它不支持安全的MQTT websockets (wss://),给我非法参数异常的服务器uri。

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

这也不工作!我得到Jetty SSL异常。

如果你有一个你以前使用过的实现,请与我分享,这已经花费了我很多时间,我仍然无能为力,谢谢!

对于这两个库,我尝试使用它们的文档中提供的示例代码。

我认为Paho Android客户端不支持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'
    ...
    }

使用mqttasynclient代替MqttAndroidClient,像这样:

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

我使用"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;

相关内容

  • 没有找到相关文章