Согласно моему комментарию, вы можете реализовать шаблон запрос-ответ с любым брокером MQTT, но до v5 вам нужно реализовать это самостоятельно (либо иметь один ответ на topi c и идентификатор сообщения, либо включить спецификация c topi c в каждом сообщении).
Поскольку MQTT 3.11 сам по себе не предоставляет эту функциональность напрямую и не существует стандартного формата для полезной нагрузки MQTT (всего несколько байтов!), Невозможно создать универсальную реализацию c (уникальный идентификатор какой-то вид необходим в запросе). Это решено в MQTT v5 благодаря возможности включать свойства , включая Response Topi c и Данные корреляции . Для более ранних версий вы застряли с добавлением некоторой дополнительной информации в полезную нагрузку (используя любой выбранный вами механизм кодирования).
Есть несколько вопросов о переполнении стека, которые могут дать некоторое представление:
Другие статьи:
Вот несколько пакетов узлов (примечание: они не обновлялись в течение некоторого времени, и я не проверял код):
Даже с MQTT v5 вы потребуется реализовать бит ожидания простоя самостоятельно. Если вы используете QOS 1/2, то брокер позаботится о повторной отправке сообщения (до тех пор, пока не получит PUBACK / PUBCOMP), поэтому повторная отправка сообщения может быть контрпродуктивной (множество идентичных сообщений поставлено в очередь, пока связь comms не работает)