Протокол сервера

Подключение к серверу

Для взаимодействия с сервером необходимо установить защищённое TCP-соединение с использованием TLS/SSL по адресу:

  • Хост: microcomm.ru
  • Порт: 8008
  • Шифрование: обязательно (требуется TLS 1.2 или выше)

💡 Незашифрованные соединения не поддерживаются — сервер будет отклонять любые попытки подключения без TLS.


Формат сообщений

Все сообщения (как запросы, так и ответы) передаются в виде валидных JSON-объектов в кодировке UTF-8.
Каждое сообщение должно содержать два обязательных поля:

  • cmd — строка с именем команды (регистр важен);
  • data — полезная нагрузка, которая может быть строкой, числом, объектом или массивом — в зависимости от контекста команды.

Пример запроса

{
  "cmd": "LOGIN",
  "data": {
    "uuid": "d3886753-82fe-47e2-9f05-ed485cd25590"
  }
}

Формат ответа

Сервер всегда отвечает в том же JSON-формате. Имя команды в ответе формируется по шаблону:

  • Успешное выполнение: "<ИСХОДНАЯ_КОМАНДА>__SUCCESS"
  • Ошибка: "<ИСХОДНАЯ_КОМАНДА>__ERROR"

Пример успешного ответа

{
  "cmd": "LOGIN__SUCCESS",
  "data": {}
}

Пример ответа с ошибкой

{
  "cmd": "LOGIN__ERROR",
  "data": {
    "message": "Device with UUID 'd3886808-82fe-47e2-9f10-ed485cd25590' does not exist",
    "code": "DEVICE_NOT_FOUND"
  }
}

📌 Рекомендация:
Всегда проверяйте значение поля cmd в ответе, чтобы корректно обрабатывать успешные и ошибочные сценарии.


Таймауты

Сервер применяет два типа таймаутов для поддержания стабильности и безопасности соединений:

1. Таймаут активности (keep-alive)

  • Клиент должен отправлять данные не реже чем каждые 10 секунд.
  • Это может быть любая валидная команда или специальная служебная команда PING.
  • Если за 10 секунд от клиента не поступит ни одного сообщения, сервер автоматически разорвёт соединение.

Рекомендация:
Если клиент простаивает, регулярно отправляйте команду:
{"cmd": "PING", "data": {}}
Сервер ответит:
{"cmd": "PING__SUCCESS", "data": {}}

2. Таймаут авторизации

  • После установки соединения клиент обязан завершить авторизацию в течение 10 секунд.
  • Если авторизационная команда LOGIN не будет получена и успешно обработана за это время, сервер разорвёт соединение.

⚠️ Оба таймаута начинают отсчёт с момента установки TLS-соединения.