Поддержание соединения: ping_req
Сообщает серверу, что клиент на связи. Если от клиента нет ping_req дольше тайм-аута — по умолчанию 300 секунд, — сервер закрывает соединение. Таймер сбрасывает только ping_req: другие команды и кадры ping протокола WebSocket его не сбрасывают, поэтому ping_req нужен, даже если клиент активно шлёт запросы.
Запрос и ответ: ping_req → ping_resp.
Доступ: токен любого уровня.
Текущая версия ONS
operation_id в ответ не возвращается. Счётчик seq начинается с 1 и доходит до 65536, после чего снова начинается с 1; в описании v0.17 указан диапазон 0–65535.
Запрос
Поля без пометки «обязательно» можно не передавать.
| Поле | Тип | Описание |
|---|---|---|
cmd | string | ping_req |
operation_id | string | Можно передать, но в ответ сервер его не возвращает |
{
"cmd": "ping_req"
}
Ответ
| Поле | Тип | Описание |
|---|---|---|
cmd | string | ping_resp |
seq | uint32 | Номер ping_req в этом соединении: 1, 2, 3… После 65536 счёт начинается с 1. В новом соединении счёт начинается заново |
{
"cmd": "ping_resp",
"seq": 42
}
Ошибки
Ошибок у команды нет: после connected сервер всегда отвечает ping_resp.
Что важно знать
- Отправляйте чаще тайм-аута. Сервер проверяет тайм-аут раз в 30 секунд и закрывает соединение на первой проверке после его истечения. При тайм-ауте 300 секунд достаточно
ping_reqраз в минуту. - Отсчёт — от подключения. Первый
ping_reqнужен в пределах тайм-аута после сообщенияconnected. - Закрытие по тайм-ауту — без предупреждения. Сервер не присылает сообщения и не отправляет кадр Close: клиент видит обрыв, например код 1006 в браузерном WebSocket. Подписка на данные при этом снимается — после переподключения подпишитесь снова.
- До
connectedкоманда не работает. Запросы, отправленные до подтверждения подключения, сервер пропускает без ответа.
См. также
set_alive_timeout— изменить тайм-аут для текущего соединения.- Подключение — как сервер следит за соединением.