Перейти к основному содержимому

Протокол WebSocket

Intotes предоставляет три WebSocket-эндпоинта для потоковой передачи данных в реальном времени. Все используют стандартный протокол WebSocket upgrade.

Эндпоинты

ЭндпоинтНазначениеАутентификация
/api/v1/ws/tradesЛента сделокНет
/api/v1/ws/events/{event_id}/chartОбновления цен рынкаНет
/api/v1/ws/assets/{symbol}/priceОбновления цен криптоактивовНет

Подключение

const ws = new WebSocket('wss://intotes.com/api/v1/ws/trades');

ws.onopen = () => {
console.log('Connected to trades feed');
};

ws.onmessage = (event) => {
const data = JSON.parse(event.data);
console.log('New trade:', data);
};

ws.onclose = (event) => {
console.log('Disconnected:', event.code, event.reason);
};

Детали протокола

ПараметрЗначение
Интервал ping50 секунд (сервер отправляет ping)
Дедлайн чтения60 секунд (соединение закрывается без pong)
Макс. размер сообщения (сделки)512 байт
Макс. размер сообщения (графики/активы)128 байт
Макс. подключений на хаб10,000

Начальное сообщение

При подключении сервер отправляет init-сообщение с недавней историей.

Типы сообщений

  • Сделки: {"type": "trade", "trade": {...}}
  • Графики: {"type": "chart_update", ...}
  • Цены активов: {"type": "price_update", ...}

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

Реализуйте экспоненциальную задержку:

let reconnectDelay = 1000;

function connect() {
const ws = new WebSocket('wss://intotes.com/api/v1/ws/trades');

ws.onopen = () => {
reconnectDelay = 1000;
};

ws.onclose = () => {
setTimeout(connect, reconnectDelay);
reconnectDelay = Math.min(reconnectDelay * 2, 30000);
};

ws.onmessage = (event) => {
handleMessage(JSON.parse(event.data));
};
}

connect();

Хабы

ХабОбластьЧастота сообщений
СделкиГлобальнаяПри каждой сделке
ГрафикиПо событиюПри изменении цены
Цены активовПо символуКаждые несколько секунд