В каждом из заголовков может находиться набор параметров, так называемый optional header,
определяющий общедоступную адресацию уровня
IRC-IoT
внутри IRC канала, средства и промежуточные
криптографические ключи шифрования и другое.
Каждый из клиентов, который решил перебрать «Container»,
«Object» или «Datum» ведёт собственный "Cache" данных
блоков информации, и когда необходимость в их использовании отпадает,
постепенно уничтожает их (Garbage collecting). Если же чего-то не хватает,
получатель посылает запрос на повторную передачу в личном сообщении,
либо всем, в
IRC канал.
Если сообщение получено публично, то повторную передачу можно заказать как
публично, так и через приватные сообщения.
Значения «lst» означают следующее:
10 = адресная посылка владельцу «Container» c соответствующим id
11 = поиск «Container» в "Cache" у всех тех, кто мог его принять
20 = адресная посылка владельцу «Object» c соответствующим id
21 = поиск «Object» в "Cache" у всех тех, кто мог его принять
30 = адресная посылка владельцу «Datum» c соответствующим id
31 = поиск «Datum» в "Cache" у всех тех, кто мог его принять
Пример для перепосылки «Сontainer»:
{"mid":"10245", "lst": 10, "rid": 123}
Пример для перепосылки «Object»:
{"mid":"53157", "lst": 20, "rid": 345}
Пример для перепосылки «Datum»:
{"mid":"49848", "lst": 30, "rid": 567}
В случае применения алгоритмов
BASE64,
BASE85 для кодирования
содержимого полей выравнивающие символы '=' (равно) в конце получаемой строки при размещении в
IRC-IoT
сообщении – убираются, а перед декодированием восстанавливаются.
Перед началом обмена данными по протоколу
IRC-IoT,
либо в случае ошибок при проверке целостности данных, противоположная сторона может запросить версию
используемого протокола, для чего протоколом предусмотрены низкоуровневые
IRC-IoT
сообщения «ver».
Пример низкоуровневого запроса на публикацию версии протокола:
{"mid":"53159", "ver": "?"}
Пример публикации версии протокола:
{"mid":"71501", "ver": "0.3.33"}
Подробнее о формировании версии протокола можно прочесть:
здесь
Для предотвращения перегрузок удаленная сторона может на какое-то время прекратить отвечать
на запросы версии протокола после получения трех подобных запросов.
(таймауты устанавливаются на усмотрение интеграторов сети).
Для проверки доступности друг друга стороны, связанные по протоколу
IRC-IoT,
могут использовать специальные низкоуровневые эхо-сообщения.
Пример низокуровневого эхо-запроса:
{"mid":"53511","ping":"MDEyMzQ1"}
Пример ответа на низкоуровневый эхо-запрос:
{"mid":"71270","pong":"MDEyMzQ1"}
Для предотвращения перегрузок удаленная сторона может перестать отвечать на
эхо-запросы на какое-то время, но после того как пошлет сообщение с пустым
значением поля «pong».
(таймауты устанавливаются на усмотрение интеграторов сети)
Пример ответа на низкоуровневый эхо-запрос при предотвращении перегрузки:
{"mid":"71270","pong":""}
Следующий механизм
IRC-IoT
протокола – реестры операционных данных.
Элементы данных («Datum») протокола определяются типами передаваемых
объектов, и кодируются полем «ot» (Object type). Если название типа
«объекта» начинается на «l:», это означает, что описание
типа «объекта» находится в локальном реестре
IRC-IoT
сети, и контролируется посылающим сообщение роботом, а не глобальным сервисом
IRC-IoT сети.
© 2018–2020 Алексей Воронов, Все права защищены.