В моем понимании, в MQTT тема создается, когда клиент публикует что-то с соответствующим названием темы.
Не нужно настраивать тему, публикации по ней достаточно.
От сюда .
Может ли клиент подписаться на собственную тему, после того, как опубликовал, создал ли он? Я не смог найти никаких ограничений на это в спецификациях . Он также не указан как возможное ненормальное поведение:
5.4.8 Выявление ненормального поведения
Реализации сервера могут отслеживать поведение клиента для обнаружения потенциальных инцидентов безопасности. Например:
- Повторные попытки подключения
- Повторные попытки аутентификации
- Ненормальное прекращение соединений
- Сканирование тем (попытки отправить или подписаться на множество тем)
- Отправка недоставленных сообщений (нет подписчиков на темы)
- Клиенты, которые подключаются, но не отправляют данные
Исходя из этого, я думаю, что это, безусловно, возможно. Так что меня интересует, каковы варианты использования этой функции?
Почему стандарт допускает такой механизм, было бы сложно отслеживать владельца тем? Так что вместо этого он просто позволяет клиентам подписаться на собственную тему.
Один из вариантов использования, о котором я могу подумать, заключается в том, что таким образом клиент может проверить свои опубликованные данные.
Да.
Клиенты MQTT подключены к брокеру, который может быть облачным или другим устройством.
Нет такой вещи как создание темы. Они используются в качестве заголовка для сообщения. Так что, если ваш клиент подписался на тему, и если он что-то публикует по этой теме, то сообщение будет снова получено через брокера для клиента.
Примерами хороших брокеров являются Mosquitto для работы на устройствах и CloudMqtt для облачного брокера.
источник