Чи може клієнт MQTT підписатися на тему, створену власноруч?


18

Наскільки я розумію, у MQTT тема створюється, коли клієнт публікує щось із відповідною назвою теми.

Налаштувати тему не потрібно, публікації на ній достатньо.

Від сюди .

Чи можливо клієнт підписатися на власну тему, після її публікації створив її? Я не міг знайти жодних обмежень щодо цього в специфікаціях . Він не вказаний як можлива аномальна поведінка:

5.4.8 Виявлення ненормальної поведінки

Реалізації сервера можуть відстежувати поведінку клієнта для виявлення можливих інцидентів із безпекою. Наприклад:

  • Неодноразові спроби з'єднання
  • Неодноразові спроби аутентифікації
  • Ненормальне припинення з'єднань
  • Сканування тем (спроби надсилання або підписки на багато тем)
  • Надсилання недоставних повідомлень (немає підписників на теми)
  • Клієнти, які підключаються, але не надсилають дані

Виходячи з цього, я думаю, що це, безумовно, можливо. Тож мене цікавить, якими є випадки використання цієї функції?

Чому стандарт дозволяє такий механізм, було б складно відстежувати власника тем? Тож натомість він просто дозволяє клієнтам підписатися на власну тему.

Один із випадків використання, який я можу придумати, полягає в тому, що таким чином клієнт може перевірити свої опубліковані дані.

Відповіді:


19

Так, можна підписатися на тему, яку створив сам.

Клієнт MQTT може бути одночасно і видавцем, і підпискою. У термінах MQTT, клієнт включає в себе і те, subscribersі publishers.

Мене цікавить, якими є випадки використання цієї функції?

Можливий випадок використання (я припускаю) полягає в тому, що, припустимо, є три клієнти (x, y, z), підписані на тему, x-topicстворену користувачем x. Щоразу, коли повідомлення публікується на x-topic, усі, хто підписався на цю тему, отримуватимуть повідомлення. Якщо yпублікує повідомлення до теми x-topic(я припускаю, що це можна зробити), якщо xвона не підписується на цю тему, навіть незважаючи на те, що вона створила тему, вона не отримуватиме повідомлення.

Таким чином, клієнту потрібно підписатися на тему, щоб отримувати повідомлення, навіть якщо це оригінальний автор цієї теми.

Але механізмом можна керувати, використовуючи брокерів як засіб.


Так, цей варіант перейшов мені на думку. Тільки я не був впевнений, чи зможе новий клієнт опублікувати в існуючій темі, яку вже використовував інший видавець.
Бенс Каулікс

Так, новий клієнт може опублікувати в існуючій темі. Пам'ятайте, що клієнти не спілкуються безпосередньо, кожна публікація та підписка відбувається через брокера.
bravokeyl

0

Так.

Клієнти MQTT підключені до брокера, який може бути хмарою або іншим пристроєм.

Немає такого поняття, як створення теми. Вони використовуються як заголовок для повідомлення. Отже, якщо ваш клієнт підписався на тему і якщо він щось опублікував на цю тему, то повідомлення буде отримано через брокера до клієнта знову.

Прикладами хороших брокерів є Mosquitto для роботи на пристроях та CloudMqtt для хмарного брокера


4
Це насправді не розширює поглинання знань за межі того, що інша відповідь вже була надана рік тому. Ви можете додавати нові відповіді навіть на відповіді на запитання. Однак ці відповіді повинні запропонувати додаткові або оновлені уявлення про питання чи рішення.
Гельмар
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.