Un client MQTT peut-il s'abonner à un sujet créé par lui-même?

18

À ma connaissance, dans MQTT, un sujet est créé une fois qu'un client publie quelque chose avec le nom de sujet correspondant.

Il n'est pas nécessaire de configurer un sujet, sa publication suffit.

D' ici .

Est-il possible pour un client de s'abonner à son propre sujet, après l'avoir publié, créé? Je n'ai trouvé aucune restriction à ce sujet dans les spécifications . Il n'est pas répertorié non plus comme un comportement anormal possible:

5.4.8 Détection des comportements anormaux

Les implémentations de serveur peuvent surveiller le comportement du client pour détecter les incidents de sécurité potentiels. Par exemple:

  • Tentatives de connexion répétées
  • Tentatives d'authentification répétées
  • Arrêt anormal des connexions
  • Analyse des sujets (tente d'envoyer ou de s'abonner à de nombreux sujets)
  • Envoi de messages non distribuables (aucun abonné aux sujets)
  • Clients qui se connectent mais n'envoient pas de données

Sur cette base, je pense que c'est certainement possible. Je suis donc intéressé par les cas d'utilisation de cette fonctionnalité?

Pourquoi la norme permet-elle un tel mécanisme, serait-il trop compliqué de suivre le propriétaire des sujets? Au lieu de cela, cela permet simplement aux clients de s'abonner à leur propre sujet.

Un cas d'utilisation auquel je peux penser est que de cette façon, un client peut vérifier ses données publiées.

Bence Kaulics
la source

Réponses:

19

Oui, il est possible de s'abonner à un sujet créé par lui-même.

Un client MQTT peut être à la fois éditeur et abonné. En termes MQTT, un client comprend à la fois subscriberset publishers.

Je suis intéressé par les cas d'utilisation de cette fonctionnalité?

Un cas d'utilisation possible (je suppose) est que, supposons qu'il y ait trois clients (x, y, z) abonnés à un sujet x-topiccréé par x. Chaque fois qu'un message est publié x-topic, toutes les personnes abonnées à ce sujet recevront le message. Si ypublie un message sur un sujet x-topic(je suppose que cela peut être fait), s'il xne s'abonne pas à ce sujet même s'il a créé le sujet, il ne recevra pas les messages.

Un client doit donc être abonné à un sujet pour recevoir des messages même s'il s'agit du créateur original de ce sujet.

Mais le mécanisme peut être contrôlé en utilisant des courtiers comme médium.

bravokeyl
la source
Oui, cette option m'a traversé l'esprit. Seulement, je ne savais pas si un nouveau client pouvait publier sur un sujet existant, déjà utilisé par un autre éditeur.
Bence Kaulics
Oui, un nouveau client peut publier sur un sujet existant. N'oubliez pas que les clients ne communiquent pas directement, chaque publication et abonnement se fait via un courtier.
bravokeyl
0

Oui.

Les clients MQTT sont connectés à un courtier qui peut être un cloud ou un autre appareil.

La création d'un sujet n'existe pas. Ils sont utilisés comme en-tête d'un message. Donc, si votre client s'est abonné à un sujet et s'il publie quelque chose sur ce sujet, le message sera à nouveau reçu via le courtier.

Des exemples de bons courtiers sont Mosquitto pour fonctionner sur les appareils et CloudMqtt pour le courtier basé sur le cloud

Hitesh Pratyush V
la source
4
Cela n'élargit pas vraiment le corpus de connaissances au-delà de ce que l'autre réponse avait déjà fourni il y a un an. Vous êtes libre d'ajouter de nouvelles réponses même aux questions auxquelles vous avez répondu. Cependant, ces réponses devraient offrir des informations supplémentaires ou mises à jour sur la question ou la solution.
Helmar