Использование ngx-mqtt в angular проекте, не дающем старых данных (ведет себя как горячий наблюдаемый) - PullRequest
0 голосов
/ 26 февраля 2020

Я использовал ngx-mqtt в проекте angular. Есть еще один проект, который создал данные и отправил данные в определенные топи c. Когда я подписываюсь на эту топи c из приложения angular, я всегда получаю данные со времени подписки, какие бы данные не публиковались позже в топи c .Я не получаю старые данные, источник данных которых опубликовал в topi c, прежде чем я подпишусь, например, на topi c.

) источник данных создал от 1 до 10 данных, например 1,2,3, 4,5,6,7,8,9,10 новый подписчик добавляется в topi c (используя приложение angular, если я подписываюсь) после отправки 5 точек данных. Я получаю данные от 6 (6,7, 8,9,10) но мне нужны данные от 1 до 10

Как получить все данные от topi c, когда я подписываюсь на любой новый топи c

Это значение по умолчанию как ведет себя mqtt?

В angular я слышал о горячих и холодных наблюдаемых. Можно ли заставить mqtt вести себя как наблюдаемый при низких температурах? (отправлять все данные каждый раз, когда подписчик подписывается)

Ответы [ 2 ]

0 голосов
/ 26 февраля 2020

MQTT будет ставить в очередь данные только для клиентов с постоянным сеансом (подробности о постоянных сеансах см. В блоге HiveMQ post ).

Это означает, что клиент должен быть уже подключен к брокер и подписался на топи c, о которых идет речь, в QOS 1 или 2.

При повторном подключении ему необходимо использовать тот же идентификатор клиента и убедиться, что для флага чистой сессии установлено значение false.

MQTT - это протокол pub / sub, а не общая система очередей сообщений c.

0 голосов
/ 26 февраля 2020

Используйте оператор shareReplay(), который предназначен для подобных сценариев ios. Все поздние подписчики получат все испущенные значения. https://www.learnrxjs.io/learn-rxjs/operators/multicasting/sharereplay

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...