Согласно спецификациям , клиент всегда должен устанавливать соединение с сервером.
Клиент:
Программа или устройство, которое использует MQTT. Клиент всегда устанавливает сетевое соединение с сервером . Он может
Публикация сообщений приложения, которые могут заинтересовать других клиентов.
Подпишитесь на заявку Заявки на сообщения, которые она заинтересована в получении.
Отмените подписку, чтобы удалить запрос на сообщения приложения.
Отключиться от Сервера.
И если этот клиент подписывается на сообщение приложения, сервер должен переслать эти сообщения этому конкретному клиенту.
Сервер:
Программа или устройство, которое действует как посредник между Клиентами, которые публикуют Сообщения приложений, и Клиентами, которые сделали Подписки. Сервер
Принимает сетевые подключения от клиентов.
Принимает сообщения приложений, опубликованные клиентами.
Процессы Подписка и Отмена подписки запросов от клиентов.
Пересылает сообщения приложений, которые соответствуют клиентским подпискам .
Означает ли это, что если клиент подписывается, то он остается подключенным к серверу, пока подписка действительна, хотя в большинстве случаев поток данных отсутствует?
Я пришел к такому выводу, потому что, если клиент отключается после подписки, то сервер не может пересылать ему сообщения, потому что именно клиент должен установить соединение. Но он не будет знать, когда восстановить его.