Как правило, вам нужно будет выбрать протокол с надежными гарантиями того, получит ли клиент какие-либо пакеты / сообщения, в каком порядке и разрешено ли дублирование.
Для сети устройств IoT, отправляющих друг другу сообщения небольшого и среднего размера , использование MQTT с качеством обслуживания 2 , по-видимому, хорошо подходит для вашего варианта использования. Как указано в ссылке HiveMQ:
Наибольшее QoS равно 2, это гарантирует, что каждое сообщение будет получено только один раз. Это самый безопасный и самый медленный уровень качества обслуживания. Гарантия обеспечивается двумя потоками туда и обратно между отправителем и получателем.
Обратите внимание, что QoS 2 сохраняет порядок сообщений и, как указано, предотвращает дублирование сообщений.
Использование MQTT QoS 2 сопряжено со значительными накладными расходами по сравнению со стандартным QoS 0 (что сродни сообщению «забей и забудь»; если оно не доходит до брокера, то сообщение не пересылается и исчезает навсегда ) - QoS 2 требует 4 сообщения ( PUBLISH
от отправителя, PUBREC
от брокера, PUBREL
от клиента, PUBCOMP
от брокера), поэтому обработка, как правило, займет больше времени, потребует больше ресурсов (следовательно, более длительные радиопередачи и большее потребление энергии на любых ограниченных конечных точках).
Сообщение MQTT QoS 2 будет просто повторно отправляться от отправителя до тех пор, пока оно не получит подтверждение от брокера, поэтому в конечном итоге ваше сообщение должно пройти, даже если ваше соединение несовершенно.
Подходит ли основанный на теме протокол публикации-подписки для вашего варианта использования, решать вам; статья в Википедии может помочь вам составить представление.