#mqtt
Вопрос:
Из того, что я понимаю, псевдонимы тем не хранятся в состоянии сеанса. [Раздел 4.1 Спецификация MQTT 5]
Для нас это означает, что каждый раз, когда устройство подключается, необходимо сопоставлять имя темы с псевдонимом с помощью пакета публикации, увеличивая время связи и дольше сохраняя устройство в состоянии бодрствования.
Я бы предпочел, чтобы я сопоставлял имена тем только с псевдонимами тем, когда начинаю новый сеанс. Это приводит к отправке меньшего количества данных, и устройство может быстро вернуться в спящий режим.
Брокер, которого мы используем, — EMQX, я создал заявку в службу поддержки.
Я знаю, что хранение псевдонимов увеличивает требования к хранилищу для состояния сеанса.
Может ли кто-нибудь еще подтвердить это и как они преодолели это ограничение?
Ответ №1:
Из раздела 3.3.2.3.4 спецификации MQTTv5
Сопоставления псевдонимов разделов существуют только в пределах Сетевого подключения и действуют только в течение всего срока действия этого Сетевого подключения. Получатель НЕ ДОЛЖЕН передавать какие-либо сопоставления псевдонимов тем из одного сетевого подключения в другое [MQTT-3.3.2-7].
В спецификации четко указано, что они не должны быть частью Сохраненных данных сеанса.
Комментарии:
1. Я действительно видел это в спецификации, но забыл упомянуть об этом. К сожалению, это не входит в спецификацию. Спасибо, что ответили.
2. Причина в том, что вы не можете гарантировать, что клиент смог сохранить состояние после перезапуска, поэтому он не будет знать, какие псевдонимы соответствуют каким темам. (Также псевдонимы, как правило, основаны на порядке отправленных сообщений, поэтому могут меняться с каждым сеансом)
3. Я об этом не подумал. Похоже, это сложнее, чем я думал. Еще раз спасибо.