У меня два вопроса:

1) Как получить список всех тем и выполнить определенные действия в браузере, в зависимости от того, открыта конкретная тема или нет?

2) Присоединяюсь к брокеру и подписываюсь на его темы. Но он обновляет данные раз в минуту. Соответственно данные в браузере обновляются раз в минуту (захожу на страницу и вижу старые данные, которые обновляются в течении минуты). Можно ли как-то заставить брокера возвращать мне данные сразу после подписки?

P.S. Я использую MQTT.JS

0
user9675246 15 Окт 2019 в 18:44

1 ответ

Лучший ответ
  1. Нет, поскольку темы по сути эфемерны, они существуют только тогда, когда клиент их публикует. В этот момент брокер просматривает список шаблонов тем, запрошенных всеми подключенными клиентами, и отправляет это сообщение тем, которые соответствуют. Самое близкое, что вы можете сделать, - это подписаться на шаблон темы #, что будет означать, что вы будете видеть все сообщения (но только когда они опубликованы). # - это глобальный подстановочный знак, который соответствует нескольким уровням (он всегда должен идти в конце шаблона темы и может соответствовать только целым уровням), есть также подстановочный знак +, который соответствует одному уровню в тема. В этом сообщении блога более подробно объясняется, как работают подстановочные знаки: https://www.hivemq.com/blog/mqtt-essentials-part-5-mqtt-topics-best-practices/

  2. То, что вы ищете, называется сохраненными сообщениями. У сохраненных сообщений есть флаг в заголовке сообщения. Когда брокер видит этот флаг, он кэширует это сообщение и доставляет его в момент, когда новый клиент подписывается на эту тему, прежде чем любые другие сообщения. Этот флаг может быть установлен только издателем в момент публикации сообщения. В следующем сообщении блога объясняются сохраненные сообщения: https: // www .hivemq.com / blog / mqtt-essentials-part-8 -olated-messages /.

1
hardillb 15 Окт 2019 в 20:09