在这里完全丢失,但只要我尝试连接到CloudMQTT,我的客户端崩溃。Android Paho + CloudMQTT EOFException只要我连接
3-05 16:22:54.541 9063-9078/my.pkg.name d/MQTTCONN:关于连接
03-05 16:22:55.341 9063-9091/my.pkg。命名d/AlarmPingSender:注销alarmreceiver到MqttServiceourTestMqttSubId
03-05 16:22:55.375 9063-9063/my.pkg.name E/MQTTFAIL:连接丢失
03-05 16:22:55.376 9063- 9063/my.pkg.name W/System.err:at org.eclipse.paho.client.mqttv3.internal.CommsReceiver.run(CommsReceiver.java:146)
03-05 16:22:55.377 9063-9063/my.pkg.name W/System.err:at org.eclipse.paho.client.mqttv3.internal.wire.MqttInputStream.readMqttWireMessage(MqttInputStream.java:65 )
03-05 16:22:55.377 9063-9063/my.pkg.name W/System.err:at org.eclipse.paho.client.mqttv3.internal.CommsReceiver.run(CommsReceiver.java:107 )
这里是我的代码:
final MqttAndroidClient mqttClient = new MqttAndroidClient(
argsService.getContext(),
(String) configService.getArg("mqttBroker"),
activeSubId.getSubId(),
new MemoryPersistence()
);
MqttConnectOptions options = new MqttConnectOptions();
options.setCleanSession(true);
options.setUserName((String) configService.getArg("mqttUser"));
options.setPassword(((String) configService.getArg("mqttPassword")).toCharArray());
options.setConnectionTimeout(9999);
Log.d("MQTTCONN", "About to connect");
mqttClient.connect(options, null, new IMqttActionListener() {
@Override
public void onSuccess(IMqttToken asyncActionToken) {
Log.d("MQTTCONN", "Connect ready");
mqttClient.setCallback(new MqttCallback() {
@Override
public void connectionLost(Throwable cause) {
// Someday, in case we want to recover our service
}
@Override
public void messageArrived(String topic, MqttMessage message) throws Exception {
receiveMessageIntent.enact(
new JSONObject(new String(message.getPayload())),
pubsub
);
}
@Override
public void deliveryComplete(IMqttDeliveryToken token) {
}
});
try {
mqttClient.subscribe(getSubId().getSubId(), QOS);
} catch (MqttException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
Log.e("MQTTFAIL", exception.getMessage());
exception.printStackTrace();
}
});
疑难解答我已经尝试过:
- 设置权在上面的清单打开我
application
标签适当的Android权限(但我不使用的持久性,所以它只是需要上网) - 设置MQTT版本
MqttConnectOptions.MQTT_VERSION_3_1
- 试图
ssl://
与CloudMQTT的SSQL 2XXXX端口 - 重启CloudMQTT实例