Mqtt доставка сообщений, когда пользователь выйдет в сеть - PullRequest
0 голосов
/ 12 апреля 2020

Можно ли использовать mqtt + mosquitto (или любого другого брокера, такого как rabbitmq, redis) с целью уведомления pu sh вместо FCM?

Давайте предположим, что мы используем mqtt + mosquitto.

Я объясняю свой необходимый сценарий:

Пользователь A отправляет сообщение пользователю B , но пользователь B сейчас не в сети. Каждый раз, когда пользователь B будет подключен к сети, он должен быть уведомлен о своем ожидающем сообщении.

Как реализовать этот сценарий с брокером

1 Ответ

2 голосов
/ 12 апреля 2020

MQTT имеет понятие «постоянные сессии». Существует флаг под названием «чистый сеанс», который клиент отправляет посреднику в пакете подключения при первом подключении. Установив для этого флага значение false, клиент просит брокера «запомнить меня».

Затем, если клиент отключает или теряет соединение, брокер будет хранить сообщения для клиента до следующего повторного подключения, и отправьте их клиенту в полученном порядке.

В MQTT каждый клиент должен иметь уникальный "ClientID". Это то, как брокер распознает клиента при повторном подключении. Клиент использует подписки, чтобы сообщить брокеру, какие сообщения он хочет получить при первом подключении, а затем после этого брокер запоминает список подписок для этого клиента и все сообщения, соответствующие этим подпискам.

Итак, для вашего сценария клиент B должен будет подключиться один раз с постоянным сеансом, а затем после , что брокер будет хранить сообщения для него всякий раз, когда он отключается.

...