«Пакет» — единица данных для обмена информацией. Обмен данными между мобильным устройством происходить при помощи «пакетов». Пакет состоит из:
- заголовка;
- метаданных;
- строкового блока;
- бинарного блока.
Заголовок
– представляет из себя строку, в которой указывается число. Число предназначено для определения длины метаданных. Строка имеет длину 16 символов и состоит из типа, чисел, «наполнителя» и статуса пакета. Наполнителем должен являться символ «.» (точка). Статусы пакета:
- 0 – создан
- 1 – доставлен
- 2 – в обработке
- 3 – обработан
- 9 – обработан с ошибкой
Пример
NML950………0
, где NML — тип пакета, 950 – это длина строки, в которой содержатся метаданные «пакета», а остальные символы — это «наполнители».
Примечание: Длина строки должна равняться 16 символам.
Метаданные
Блок предназначен для хранения дополнительной информации о пакете. Данные хранятся в формате JSON. Основные поля:
- stringSize: integer – длина строки, в которой хранится строковый блок
- binarySize: integer – длина блока, в которой хранится бинарный блок
- attachments: any[] – метаданные для бинарных данных
- size: integer – длина бинарного файла;
- transaction: boolean – выполнять инструкции строкового блока (to или from) в одной транзакции или нет. По умолчанию false;
- dataInfo: string — Тип данных, например, service/full/meduim/lite. По умолчанию может быть не указан. Подробнее смотреть ниже;
- version: string – версия протокола для обработки «пакета». Является числом с плавающей точкой, с точностью до десятых. Например, 1.2, 1.5;
- id: string — идентификатор пакета.
Количество дополнительных полей и параметров может отличаться в каждом проекте, так, например, в блоке attachments элемент может содержать свойство href: string – ссылка на файл хранящейся на сервере.
пример
{
"stringSize": 10000,
"binarySize": 8500,
"attachments": [
{
"size": 500
},
{
"size": 8000
}
],
"transaction": false,
"dataInfo": "user",
"id": ""
}
Строковый блок
– блок с данными в формате JSON. Состоит из объектов:
- to: any – блок для передачи данных в формате RPC
- from: any – блок для получения данных в формате RPC. Может быть не указан.
пример
{
"to": [{
"action": "users",
"method": "add",
"data": [{ id: 1, "login": "user1" }],
"type": "rpc",
"tid": 1
}],
"from": [{
"action": "users",
"method": "query",
"data": [{
filter: [{…}],
limit: 25
}],
"type": "rpc",
"tid": 1
}]
}
Бинарный блок
Финальный блок пакета. Может быть не указан. Предназначен для прикрепления бинарных данных. Информация храниться в бинарном формате. Файлы должны следовать друг за другом.