Skip to main content

Служебные сообщения сервера

Служебные сообщения сервер присылает вместо ответа, если не смог разобрать запрос: сообщение не JSON, в JSON нет поля cmd или такой команды нет. В них нет полей status и error_code: само имя сообщения и есть описание ошибки.

СообщениеКогда приходитoperation_id
json_parse_errorТекстовое сообщение — не JSON или не в кодировке UTF-8Нет
invalid_reqJSON — не объект или объект без поля cmdНет
invalid_command_reqВ cmd — неизвестная командаИз запроса
Текущая версия ONS

Сообщение die_connection_close из описания v0.17 сервер не отправляет. Соединение, по которому истёк тайм-аут, сервер закрывает без сообщения и без кадра Close — см. ping_req.

json_parse_error​

Приходит, если текстовое сообщение не удалось разобрать как JSON или оно не в кодировке UTF-8. Сервер присылает его даже до подтверждения подключения (connected).

{
"cmd": "json_parse_error"
}

Что делать. Проверьте, что клиент отправляет корректный JSON текстовым сообщением в UTF-8. В ответе нет operation_id, поэтому сопоставить его с запросом можно только по порядку отправки — проверяйте JSON перед отправкой.

invalid_req​

Приходит, если сообщение — корректный JSON, но не объект (например, массив или строка) или объект без поля cmd.

{
"cmd": "invalid_req"
}

Что делать. Отправляйте каждый запрос JSON-объектом с полем cmd. operation_id из такого запроса сервер не возвращает.

invalid_command_req​

Приходит, если в cmd указана команда, которой нет на сервере, например из-за опечатки в имени. То же сообщение приходит, если connections_list не смогла получить список соединений.

{
"cmd": "invalid_command_req",
"operation_id": "abc"
}
ПолеТипОписание
cmdstringinvalid_command_req
operation_idstringЗначение из запроса; пустая строка, если его не было

Что делать. Проверьте имя команды. Обратите внимание: у некоторых команд имя запроса без _req, например connections_list, connection_kill, set_alive_timeout.

Когда сервер не отвечает вовсе​

  • Запрос отправлен до сообщения connected со status: 1 — сервер его пропускает. Дождитесь connected, см. Подключение.
  • Сообщение отправлено бинарным кадром — сервер принимает только текстовые.
  • В cmd не строка, а число, null, объект или массив.

Сообщения, которые сервер присылает сам​

СообщениеКогдаОписание
connectedСразу после подключенияПодключение
consume_respПосле connected, если в настройках приложения включена автоподпискаconsume_req
realtime_dataНа каждый uplink, если соединение подписаноconsume_req
downlink_statusПри смене статуса отправленного кадра, если подписка оформлена с "downlink_status": trueОтправка данных на устройство

См. также​

  • Подключение — порядок подключения и случаи, когда сервер закрывает соединение.