[英]MQTT Android Paho Library not connecting to my localhost broker
我正在尝试为Android设备制作一个简单的Hello World风格程序,并测试在本地主机上运行的MQTT代理。 到目前为止,这是我所做的:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String broker = "tcp://192.168.X.X:1883";
String clientID = "AndroidClient";
final MqttAndroidClient mqttClient = new MqttAndroidClient(MainActivity.this, broker, clientID);
try {
mqttClient.connect();
} catch (MqttException e) {
e.printStackTrace();
Toast.makeText(MainActivity.this, "Something Went Wrong", Toast.LENGTH_SHORT).show();
}
if(mqttClient.isConnected()){
Toast.makeText(MainActivity.this, "Hello World!", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(MainActivity.this, "Could not connect to the server!", Toast.LENGTH_SHORT).show();
return;
}
//Do more things...
}
每次我运行代码时,它都会运行else块。 我不确定自己在做什么错,因为我正在运行Mosquitto,并且localhost地址是我的ipconfig中显示的内容,所以我真的不知道自己在做什么错。
感谢所有帮助!
查看MQTTAndroidClient的文档,它说它是IMqttAsyncClient的实现,这意味着方法将立即返回并在后台继续,
这意味着在您调用mqttClient.connect();
客户端不太可能完成连接mqttClient.connect();
鉴于您是在create上运行此代码的(您不应真正在其中运行阻止任务),您应该查看使用onSuccess
回调来检测连接何时完成,例如:
IMqttToken conToken;
conToken = asyncClient.connect("some context",new new MqttAsyncActionListener() {
public void onSuccess(IMqttToken asyncActionToken) {
log("Connected");
}
public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
log ("connect failed" +exception);
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.