MQTT订阅在Android中不起作用
我试图使用Android服务从MQTT代理获取消息,但它不起作用 使用的库是Paho MQTT库,源代码如下所示MQTT订阅在Android中不起作用,mqtt,paho,Mqtt,Paho,我试图使用Android服务从MQTT代理获取消息,但它不起作用 使用的库是Paho MQTT库,源代码如下所示 final MqttConnectOptions hIoTConnectionOptions = new MqttConnectOptions(); hIoTConnectionOptions.setMqttVersion(MqttConnectOptions.MQTT_VERSION_3_1); hIoTConnectionOptions.setAutomaticReconnect
final MqttConnectOptions hIoTConnectionOptions = new MqttConnectOptions();
hIoTConnectionOptions.setMqttVersion(MqttConnectOptions.MQTT_VERSION_3_1);
hIoTConnectionOptions.setAutomaticReconnect(true);
hIoTConnectionOptions.setCleanSession(false);`
try {
hIoTAndroid = new MqttClient(ip_addr, clientID, new MemoryPersistence());
IMqttToken conToken = hIoTAndroid.connectWithResult(hIoTConnectionOptions);
hIoTAndroid.setCallback(MqttMessagingService.this);
conToken.setActionCallback(new IMqttActionListener() {
@Override
public void onSuccess(IMqttToken asyncActionToken) {
Log.d(TAG, "onSuccess");
hIoTAndroid.setCallback(MqttMessagingService.this);
try {
IMqttToken subToken = hIoTAndroid.subscribeWithResponse(subtopic, 1);
subToken.setActionCallback(new IMqttActionListener() {
@Override
public void onSuccess(IMqttToken asyncActionToken) {
Log.i(TAG, "Successfully subscribe to: " + subtopic);
}
@Override
public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
Log.d(TAG, "Couldn't subscribe to: " + subtopic);
}
});
} catch (MqttException | NullPointerException ex) {
ex.printStackTrace();
}
}
@Override
public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
Log.d(TAG, "Failed Connection");
}
});
} catch (MqttException ex) {
Log.d(getClass().getCanonicalName(), "Connection attempt failed with reason code = " + ex.getReasonCode() + ":" + ex.getCause());
}
@Override
public void connectComplete(boolean reconnect, String serverURI) {
Log.d(TAG, "Connection is established....");
}
@Override
public void connectionLost(Throwable cause) {
Log.d(TAG, "The Connection was lost,,");
}
@Override
public void messageArrived(String topic, MqttMessage message) throws Exception {
Log.i(TAG, new String(message.getPayload()));
}
@Override
public void deliveryComplete(IMqttDeliveryToken token) {
Log.d(TAG, "Sent Message !");
}
publish和deliveryComplete函数工作正常,但subscribe函数和MessaGrarived不工作。为什么?我对
org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.1.1有同样的问题,并且subscribe
调用返回的令牌是null
。感谢您的回复。此问题已解决。订阅服务器不工作,因为您尚未设置Mqtt回调客户端_subscribe.setCallback(This);