Служебные сообщения сервера
Служебные сообщения сервер присылает вместо ответа, если не смог разобрать запрос: сообщение не JSON, в JSON нет поля cmd или такой команды нет. В них нет полей status и error_code: само имя сообщения и есть описание ошибки.
| Сообщение | Когда приходит | operation_id |
|---|---|---|
json_parse_error | Текстовое сообщение — не JSON или не в кодировке UTF-8 | Нет |
invalid_req | JSON — не объект или объект без поля cmd | Нет |
invalid_command_req | В cmd — неизвестная команда | Из запроса |
Сообщение 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"
}
| Поле | Тип | Описание |
|---|---|---|
cmd | string | invalid_command_req |
operation_id | string | Значение из запроса; пустая строка, если его не было |
Что делать. Проверьте имя команды. Обратите внимание: у некоторых команд имя запроса без _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 | Отправка данных на устройство |
См. также
- Подключение — порядок подключения и случаи, когда сервер закрывает соединение.