Відповідно до специфікацій , завжди клієнт повинен встановити з'єднання з сервером.
Клієнт:
Програма або пристрій, що використовує MQTT. Клієнт завжди встановлює мережеве підключення до сервера . Це може
Публікуйте повідомлення про додатки, які можуть зацікавити інших клієнтів.
Підпишіться на запит Повідомлень програми, які він зацікавлений у отриманні.
Скасуйте підписку, щоб видалити запит на повідомлення програми.
Відключіться від сервера.
І якщо цей клієнт підписався на повідомлення про програму, сервер повинен переслати ці повідомлення саме цьому клієнту.
Сервер:
Програма або пристрій, який виступає посередником між Клієнтами, які публікують Повідомлення програми, та Клієнтами, які зробили підписку. Сервер
Приймає мережеві з'єднання від клієнтів.
Приймає повідомлення про додатки, опубліковані Клієнтами.
Процеси Підписка та скасування підписки на запити клієнтів.
Пересилає повідомлення додатків, які відповідають клієнтським підпискам .
Чи означає це, що якщо клієнт підписується, він залишається підключеним до сервера, поки підписка є дійсною, хоча більшість часу немає потоку даних?
Я приходжу до такого висновку, оскільки якщо клієнт відключається після підписки, сервер не може пересилати йому повідомлення, оскільки саме той клієнт повинен встановити з'єднання. Але не буде відомо, коли його відновити.