2016-12-09 1 views
1

Je suis nouveau à MQTT et j'ai quelques questions avec lesquelles j'espère que vous pourriez m'aider. Je travaille sur un projet d'école qui me besoin d'utiliser le protocole MQTT et le programme doit être écrit en C. (Juste un peu d'information de fond)Client MQTT Publier et s'abonner en même temps

  1. un client MQTT Peut-être à la fois un éditeur et un abonné en même temps? C'est-à-dire, tout en attendant constamment de recevoir des messages du courtier et d'effectuer des actions résultantes, il est également capable de publier des messages à un courtier au besoin.

    Ma compréhension de MQTT est en tant que tel: MQTT Editeur -> MQTT Broker -> MQTT Abonné

  2. Quel est exactement le mode asynchrone de MQTT, en termes d'idiot?

Merci!

Répondre

3

1) Oui, il n'y a aucune raison pour un client MQTT ne peut pas être une publication et un abonné, c'est un mode normal pour un client de travailler.

2) implémentation client asynchrone MQTT est celui qui ne bloque pas lors de l'exécution des opérations réseau (envoi ou réception de données). Cela signifie que toutes les opérations réseau se déroulent en arrière-plan, un jeton est renvoyé à partir de tout appel qui normalement bloquerait peut être utilisé pour vérifier si cette opération a réussi plus tard.

+0

Salut merci pour votre réponse! Pour Qn1, comment puis-je m'y prendre pour atteindre cet objectif en programmation? Pour permettre à un programme de faire les deux en même temps? Je suis honnêtement assez perdu et j'espère que vous pourrez me diriger dans la bonne direction. Merci! –

+0

Regardez les exemples et essayez, quand vous êtes bloqué posez une nouvelle question, incluez le code que vous avez et quelqu'un vous aidera à le réparer – hardillb

1

1) Lorsque vous dites que votre client mqtt a souscrit à un sujet particulier, cela signifie qu'il continuera à l'écouter jusqu'à ce qu'il soit désabonné ou que la connexion soit terminée. Quand vous dites que votre client mqtt publie, il publie le MqttMessage au courtier et tous les clients qui sont abonnés à i.e listen recevront le message. Il vous suffit donc de vous abonner et de commencer à publier.

2) Le mode asynchrone ne bloque pas le thread pour effectuer une action. Il agit simplement sur l'action donnée et retourne un jeton qui peut être utilisé pour suivre et attendre que l'action soit complétée. Ceci est opposé au mode synchrone où le thread est bloqué jusqu'à ce que l'action soit terminée sur la période timeOut. Par exemple: Lorsque vous publiez en mode asynchrone, vous recevrez un message IMqttDeliveryToken qui pourra être utilisé ultérieurement pour vérifier si l'action de publication a été effectuée.