#mqtt #mosquitto
Вопрос:
MQTT v5.0: https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901113
Точно так же, как в «ОПУБЛИКОВАТЬ», мы можем подписаться на одну тему (например, «a/b/c») с псевдонимом «1». И брокер должен хранить карту псевдонима и темы для каждой клиентской сессии. Таким образом, брокер может публиковать сообщения с псевдонимом «1» подписчикам, которые были подписаны на тему «a/b/c». Это сэкономит много ресурсов при передаче. Есть ли какая-то причина, по которой MQTT не реализует эту функцию?
Комментарии:
1. Пожалуйста, предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.
Ответ №1:
Здесь важна формулировка, используемая в спецификации:
Отправитель решает, следует ли использовать псевдоним темы, и выбирает значение.
Вы заметите, что sender
используется слово; не client
или broker
/ server
. То, как это сформулировано, означает, что брокер может решить использовать псевдоним темы при публикации сообщений клиентам. Это может принести вам те преимущества, которые вы ищете.
Я не знаю ни о каких брокерах, которые делают это в настоящее время, но похоже, что следующая версия Mosquitto будет включать базовую реализацию (документы, проблема).
Поэтому я предполагаю, что ответ на ваш вопрос заключается в том, что спецификация позволяет использовать псевдонимы для сообщений, отправляемых брокером клиенту, но не так, как вы ожидали. Как говорит @romkey, это упрощает задачу, и можно утверждать, что отправителю лучше всего знать, каким темам следует присваивать псевдонимы.
Комментарии:
1. Спасибо! Это отличный способ реализовать псевдоним для подписчиков