2016-02-23 1 views
0
dernier

M2mqtt dans mon asp.net intégrer mvc projet. Problème de visage pour synchroniser les informations de souscription. enter image description here Lorsque plusieurs clients sont publiés sur un sujet spécifique, le client peut les abonner facilement.Pourquoi abonné vivant seul message publié se

Supposons que, dans une situation, lorsque publié, le client est hors ligne/déconnecté lorsqu'il est en vie, puis n'obtient que le dernier message publié et non tous les messages publiés. Ce qu'il faut faire est-ce un problème sur MQTT? Comment client vivant obtenir tous les messages publiés.

connexion M2mqtt avec l'utilisation des courtiers par la syntaxe ci-dessous

public static MqttClient SmartHomeMQTT { get; set; } 

    SmartHomeMQTT = new MqttClient(brokerAddress, MqttSettings.MQTT_BROKER_DEFAULT_SSL_PORT, true, new X509Certificate(Resource.ca), null, MqttSslProtocols.TLSv1_2, client_RemoteCertificateValidationCallback); 
    SmartHomeMQTT.Connect("6ea592c5-4b2f-481a-bb0a-eccbe8579d14", "####", "####", false, 3600); 

** Note: ** paramètre Connect méthode quatre défini sur false pour la propriété de clean_session mais il fonctionne pas.

+0

Jetez un oeil à [cette question] (http://stackoverflow.com/q/32967754/423955), réponse et commentaires. Essayez de définir l'indicateur 'clean_session' sur false, utilisez le même ID client lors de la reconnexion, publiez les messages à l'aide de QoS 1 ou 2. –

Répondre

0

Afin d'assurer que les abonnés reçoivent tous les messages, même ceux qui sont publiés quand ils sont hors ligne (connu comme la persistance des messages), vous devez faire quelques petites choses:

  1. Faire en sorte que « Clean Session » est éteint les abonnés
  2. Assurez-vous que chaque abonné utilise un ID de client unique
  3. Utilisez une QoS de 1 ou 2

vous ne dites pas quel serveur MQTT que vous utilisez, mais vous devez vous assurer que l'implémentation du serveur le supporte aussi.

+0

merci pour votre réponse. J'ai utilisé la syntaxe suivante, mais cela ne fonctionne pas.Veuillez vérifier ma description de la question mise à jour – shamim