WebSocket API

WebSocket API позволяет подписаться на метрики, статусы сервисов и события инцидентов в реальном времени. Это тот же канал, по которому работают живые дашборды в веб-интерфейсе.

Эндпоинты

Платформа предоставляет два совместимых транспорта поверх TLS:

  • /api/live/updates — «сырой» WebSocket-поток обновлений (метрики, статусы, события). Рекомендуется для серверных интеграций.
  • /socket.io — совместимость с клиентами Socket.IO (поллинг с апгрейдом до WebSocket). Удобно для браузерных приложений и виджетов.

Подключение

Установите защищённое соединение и передайте токен проекта в параметре запроса:

const ws = new WebSocket(
  "wss://stream.devsec.pro/api/live/updates?token=" + token
);

ws.onmessage = (event) => {
  const frame = JSON.parse(event.data);
  console.log(frame.metric, frame.value, frame.ts);
};

Формат кадров

Сервер отправляет JSON-кадры. Поле type определяет содержимое:

{
  "type": "metrics",
  "rps": 1840,
  "p95": 74,
  "errRate": 0.12,
  "ts": 1749650400
}

Подписки

После открытия соединения отправьте сообщение с интересующими каналами:

ws.send(JSON.stringify({
  "action": "subscribe",
  "channels": ["metrics", "status", "incidents"]
}));

Переподключение

Клиент должен переустанавливать соединение с экспоненциальной задержкой при разрыве. Рекомендуемый интервал — от 1 до 5 секунд. Сервер закрывает простаивающие соединения через 60 секунд без сообщений; используйте ping-кадры для поддержания канала.

Подробности по авторизации и лимитам — в разделе REST API.