0
私はトピック "Test"にメッセージを公開するために、Mosquittoをブローカーとして使用しています。 サブスクライバコードを実行してメッセージを取得し、同じネットワーク上の別のデバイスにメッセージを表示すると、そのメッセージは表示されません。メッセージが公開されているかどうか、ブローカをホストしていたデバイスのコマンド "sudo mosquitto_sub -h 192.168.43.17 ......"を使って確認しました。 メッセージが公開され、デバイスによって正常に取得されて表示されました。 加入者コードは、私がmessageArrived三つの機能(のいずれかを理解して何からMQTT購読者コード
package chat;
import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
import org.eclipse.paho.client.mqttv3.MqttCallback;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
public class MQTTSubscriber implements MqttCallback{
public MQTTSubscriber(){}
public void do1(){
String topic= "Test";
String broker= "tcp://192.168.43.17:1883";
int qos=1;
String clientId="20130326";
MemoryPersistence persistence = new MemoryPersistence();
try {
MqttClient sampleClient = new MqttClient(broker, clientId, persistence);
MqttConnectOptions connOpts = new MqttConnectOptions();
connOpts.setCleanSession(true);
System.out.println("Connecting to broker: "+broker);
sampleClient.setCallback(this);
sampleClient.connect(connOpts);
System.out.println("Connected");
sampleClient.subscribe(topic, qos);
sampleClient.disconnect();
System.out.println("Disconnected");
System.exit(0);
} catch(MqttException me) {
System.out.println("reason "+me.getReasonCode());
System.out.println("msg "+me.getMessage());
System.out.println("loc "+me.getLocalizedMessage());
System.out.println("cause "+me.getCause());
System.out.println("excep "+me);
me.printStackTrace();
}
}
public void messageArrived(String topic, MqttMessage message) throws Exception {
System.out.println("Message Arrived: " + message);
}
public void connectionLost(Throwable arg0) {
System.out.println("Connection lost");
}
public void deliveryComplete(IMqttDeliveryToken arg0) {
System.out.println("Delivery done");
}
public static void main(String args[]){
new MQTTSubscriber().do1();
}
}
である)、deilveryComplete()とconnectionLost()が呼び出されていません。メッセージを表示するためにコードにどのような変更を加える必要がありますか?