PUBLI SH сообщения могут go в любом из двух направлений
- от клиента к серверу или
- от сервера к клиенту.
Случай от сервера к клиенту возникает, если клиент подписался на топи c и сообщение было получено на совпадающем топи c. В этом случае брокер (сервер) отправляет сообщение клиенту с использованием сообщения PUBLI SH.
Подробности
Давайте поясним терминологию здесь - PUBACK и PUBLI SH относятся к в типы сообщений MQTT.
Сообщение PUBLI SH (от http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html#_Toc398718037) является (выделено мной):
PUBLI SH Пакет управления отправляется от клиента на сервер или с сервера на клиент для передачи сообщения приложения.
сообщение PUBACK (от http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html#_Toc398718043):
Пакет PUBACK - это ответ на пакет PUBLI SH с уровнем QoS 1.
A PUBLI SH сообщение может быть отправлено устройством брокеру или брокером устройству. Если используется QoS, получатель отправляет PUBACK обратно.
Просить вас объяснить разницу между двумя вышеупомянутыми? Как я понял, PUBACK отправляется от брокера AWS на устройство / клиент только тогда, когда устройство / клиент публикует на топи c с QOS = 1. Значит, это должно быть отправлено службой, это правильно? тогда что PUBACK получено с устройства? когда устройство отправляет PUBACK?
В обоих случаях предполагается, что QoS 1:
MQTT PUBACK (sent by service)
происходит после того, как устройство публикует информацию брокеру. Брокер отправляет PUBACK обратно на устройство.
MQTT PUBACK (received from device)
- это случай, описанный выше: устройство подписалось на топи c, брокер получил сообщение об этом топи c и брокер отправляет сообщение на устройство. Устройство отправляет PUBACK в ответ брокеру.
Тогда что PUBLI SH отправляется службой?
Это тот же случай, что и выше. Брокер (сервис) отправляет сообщение на устройство после того, как оно подписалось на соответствующие топи c.