Я пытаюсь реализовать метод связи между клиентом и администратором (двунаправленный) с помощью Paho MQTT JS + Mosquitto broker 1.6.8, и у меня возникают некоторые проблемы с сохраненными сообщениями и постоянными сеансами.
Что я хочу сделать sh: Мой веб-клиент подписан на топи c, где администратор публикует (скажем, топик А), а администратор подписывается на топи c где клиент публикует (тема B). Когда кто-либо из пользователей получил сообщение для этой темы c, оно появляется на экране, и они продолжают появляться под предыдущим, чтобы сформировать список сообщений. Когда они оба в сети, они должны видеть отправляемые сообщения, а если они go в автономном режиме, они также должны видеть старые и новые сообщения. Кроме того, пользователи должны иметь возможность очистить список сообщений.
Что я пробовал до сих пор: Моя первая попытка состояла в том, чтобы установить опубликованные сообщения с сохраненным значением равным true, так что сообщение может быть доставлено будущим подписчикам. Однако я вижу, что сохраняется только последнее сообщение. Я исследовал и обнаружил, что могу установить sh постоянный сеанс (с помощью cleanSession: false) между брокером и клиентом, так что, если я установлю для qos сообщения значение больше 0 (0 или 1), а клиент подписавшись на топи c, они получат все недоставленные сообщения. Это не работает для меня, или, по крайней мере, так, как я ожидаю, что это будет работать. Я попытался удалить Mosquitto Db и перезапустить (ничего не изменилось). Я также попытался использовать один и тот же идентификатор для всех клиентов и другой идентификатор для всех администраторов, потому что я подумал, что, возможно, брокер сохраняет сообщения только для определенного clientID, поэтому, если подключается клиент с совершенно другим идентификатором, он не получит сообщения.
Существует ли способ доставки ВСЕХ недоставленных сообщений (из-за того, что один клиент находится в сети, а администратор в автономном режиме или наоборот), а не только las one (сохранен)? Или есть способ сохранить более одного сообщения (на мой взгляд, лучше, если бы я мог очистить оставшиеся сообщения, отправив нулевую полезную нагрузку)?