2014-11-27 18 views
5

Da die Angabe clienID nur ein Merkmal in der Klasse MqttAndroidClient ist, kann sie nicht angegeben werden, wenn die Klassen IMqttClient und IMqttAsynchClient verwendet werden.Wofür wird die clientID benötigt?

Was ist der wahre Zweck der Verbindung eines Clients mit einem eindeutigen ID?

Antwort

7

Jede MQTT-Verbindung benötigt eine eindeutige Client-ID. Mit dieser eindeutigen Client-ID kann der Broker erkennen, wann ein Client die Verbindung wieder herstellt und eine alte, möglicherweise halb offene TCP-Verbindung für den Client schließen. Außerdem kann der MQTT-Broker eine permanente Sitzung für MQTT-Clients halten, wenn er dies wünscht (cleanSession = false on CONNECT). Wenn Sie die Verbindung mit derselben Client-ID trennen und erneut herstellen, erhalten Sie alle Nachrichten für Ihre Abonnements, die Sie möglicherweise verpasst haben, und der Broker kennt Ihre alten Abonnements für diese Client-ID.

+0

Vielen Dank für die Informatio. Aber wenn ich versuche, die IMqqttclient-Klasse r IMqtttAsynchClient-Klasse zu verwenden, gibt es keine Möglichkeit, die clientID oder die IP anzugeben. Ich habe das Internet für jedes Beispiel für die oben genannten Klassen überprüft, um zu sehen, wie man ID und IP spezifizieren kann, aber es gibt keine solchen Beispiele. irgendeine Anleitung oder Beratung? – rmaik

+0

Sie sind Schnittstellen und können nicht instanziiert werden. –

+0

@AlessandroDaRugna vielleicht könnte dies eine Anfrage für Sie sein :) http://StackOverflow.com/Questions/27174271/what-is-the-Clientid-Needed-for – rmaik