Клиент MQTT Android не подключается к брокеру

Я играю с MQTT и Android, но не могу подключить клиента к брокеру. Вот как выглядит код:

String clientId = MqttClient.generateClientId();
MqttAndroidClient client = new MqttAndroidClient(this, brokerIp, clientId);

client.setCallback(new MqttCallback() {
    @Override
    public void connectionLost(Throwable cause) {
        Log.i(TAG, "connectionLost");
    }

    @Override
    public void messageArrived(String topic, MqttMessage message) throws Exception {
        Log.i(TAG, "messageArrived");
    }

    @Override
        public void deliveryComplete(IMqttDeliveryToken token) {
        Log.i(TAG, "deliveryComplete");
    }
});

client.connect().setActionCallback(new IMqttActionListener() {
    @Override
    public void onSuccess(IMqttToken asyncActionToken) {
        Log.i(TAG, "Connection success");
    }

    @Override
    public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
        Log.i(TAG, "Connection failed: ", exception);
    }
});

Проблема в том, что ни один из обратных вызовов никогда не запускается. При запуске mosquitto в подробном режиме от этого клиента не поступают соединения, и, проверяя журнал, я не вижу никаких исключений.

Я пробовал локально и в облаке, и он не подключается ни к чему, в то время как клиент, который у меня есть на внутренней стороне, может подключаться к обоим, используя один и тот же хост и порт. Что мне не хватает?


person muilpp    schedule 01.11.2020    source источник
comment
Что отображается в журналах?   -  person hardillb    schedule 01.11.2020


Ответы (1)


Оказывается, MqttService необходимо объявить в манифесте, чтобы иметь возможность правильно связываться с Paho Android Service:

<service android:name="org.eclipse.paho.android.service.MqttService"/>
person muilpp    schedule 01.11.2020