繁体   English   中英

MQTT Android Paho库未连接到我的本地代理

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM