2016-08-22 116 views
1

我正在使用Paho Android客戶端。 https://eclipse.org/paho/clients/java/Android MQTT - Paho不支持wss://

這可能是圖書館隨時隨地MQTT Android上,但它不支持安全MQTT的WebSockets(WSS://),給我IllegalArgument例外服務器URI。

我一直在尋找一個解決方案來連接到具有WSS我MQTT WebSocket的://路徑方案,到目前爲止,只有一個庫: https://github.com/inventit/mqtt-websocket-java

這也不起作用!我得到Jetty SSL例外。

如果你有一個你以前用過的實現,請與我分享,這花了我很多時間,我仍然無能爲力,謝謝!

對於這兩個庫,我都嘗試過使用它們在文檔中提供的示例代碼。

+0

這裏有 – hardillb

+1

@hardillb的問題沒有真正的問題是如何連接到Android上的MQTT WebSocket的一個MqttAndroidClient對象,因爲目前的解決方案不起作用? – Illinois47

回答

0

我認爲,泛美衛生組織的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' 
    ... 
    } 

使用MqttAsyncClient代替MqttAndroidClient這樣的:

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

我用「WSS://」沒有任何問題。請以「WSS」模式和端口443

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;