android 上带有 paho 的 MQTT,仅接收第一条消息
MQTT with paho on android, only receiving first message
我正在使用 MQTT 和 paho 在 android 上接收和发布消息。
我的 MQTT 初始化有以下代码。
private void initializeMQTT(){
try{
mqttClient = new MqttClient(
"tcp://broker.hivemq.com:1883",
MqttClient.generateClientId(),
new MemoryPersistence()
);
mqttClient.connect();
mqttConnected = mqttClient.isConnected();
mqttClient.subscribe("testtopic/listen",1);
mqttClient.setCallback(new MqttCallback() {
@Override
public void connectionLost(Throwable cause) { //Called when the client lost the connection to the broker
}
@Override
public void messageArrived(String topic, MqttMessage message) throws Exception {
mqttPayload = topic + ": " + Arrays.toString(message.getPayload());
mqttAnswer.setPayload(mqttPayload.getBytes());
mqttClient.publish("testtopic/publish",mqttAnswer);
}
@Override
public void deliveryComplete(IMqttDeliveryToken token) {//Called when a outgoing publish is complete
messageInfoTest = "message was sent";
}
});
}
catch(MqttException e){
}
}
我只是想将收到的消息发送回其他地方作为测试。
现在发生的事情是我第一次收到关于 testtopic/receive 主题的文章。我似乎没有发布任何东西。如果我尝试向 testtopic/receive 发送另一条消息,它永远不会在我的 android.
上收到
有人知道我目前缺少什么吗?
谢谢!
我刚遇到同样的问题,在调试 PAHO 后发现 client.publish 必须从调用 messageArrived(...) 回调的线程以外的其他线程调用。 client.publish(...) 无法从 messageArrived(...) 回调代码中调用,因为它会导致死锁。
我正在使用 MQTT 和 paho 在 android 上接收和发布消息。
我的 MQTT 初始化有以下代码。
private void initializeMQTT(){
try{
mqttClient = new MqttClient(
"tcp://broker.hivemq.com:1883",
MqttClient.generateClientId(),
new MemoryPersistence()
);
mqttClient.connect();
mqttConnected = mqttClient.isConnected();
mqttClient.subscribe("testtopic/listen",1);
mqttClient.setCallback(new MqttCallback() {
@Override
public void connectionLost(Throwable cause) { //Called when the client lost the connection to the broker
}
@Override
public void messageArrived(String topic, MqttMessage message) throws Exception {
mqttPayload = topic + ": " + Arrays.toString(message.getPayload());
mqttAnswer.setPayload(mqttPayload.getBytes());
mqttClient.publish("testtopic/publish",mqttAnswer);
}
@Override
public void deliveryComplete(IMqttDeliveryToken token) {//Called when a outgoing publish is complete
messageInfoTest = "message was sent";
}
});
}
catch(MqttException e){
}
}
我只是想将收到的消息发送回其他地方作为测试。
现在发生的事情是我第一次收到关于 testtopic/receive 主题的文章。我似乎没有发布任何东西。如果我尝试向 testtopic/receive 发送另一条消息,它永远不会在我的 android.
上收到有人知道我目前缺少什么吗?
谢谢!
我刚遇到同样的问题,在调试 PAHO 后发现 client.publish 必须从调用 messageArrived(...) 回调的线程以外的其他线程调用。 client.publish(...) 无法从 messageArrived(...) 回调代码中调用,因为它会导致死锁。