LootX
Каналы и подписки
WebSocket
1Каналы и подписки
Что можно слушать в реальном времени и как не потерять соединение.
Один сокет, произвольное число подписок: wss://api.lootx.trade/v1/stream.
Подключение
const ws = new WebSocket("wss://api.lootx.trade/v1/stream");
ws.onopen = () => {
ws.send(JSON.stringify({ op: "auth", token: TOKEN }));
ws.send(JSON.stringify({ op: "subscribe", channels: ["book:bybit:BTCUSDT:25"] }));
};
// Пинг раз в 20 секунд — иначе сервер закроет соединение по таймауту.
setInterval(() => ws.readyState === 1 && ws.send(JSON.stringify({ op: "ping" })), 20_000);Каналы
| Канал | Формат | Что приходит |
|---|---|---|
trades |
trades:<биржа>:<символ> |
Каждая сделка: цена, объём, сторона |
book |
book:<биржа>:<символ>:<глубина> |
Стакан: снимок, затем изменения |
kline |
kline:<биржа>:<символ>:<тф> |
Свечи, включая незакрытую |
orders |
orders |
Ваши заявки: создание, исполнение, отмена |
positions |
positions |
Изменения позиций |
account |
account |
Баланс и маржа |
Стакан: снимок и дельты
Первым сообщением канала book приходит полный снимок ("type": "snapshot"), дальше — только изменившиеся уровни ("type": "delta"). Уровень с нулевым объёмом означает, что уровень исчез.
{
"channel": "book:bybit:BTCUSDT:25",
"type": "delta",
"seq": 88123,
"data": { "bids": [["61840.5", "0.42"], ["61840.0", "0"]], "asks": [] }
}Обрывы
Переподключайтесь с задержкой
1 с, 2 с, 4 с… до 30 с, со случайным разбросом. Десять клиентов, синхронно ломящихся после сетевого сбоя, — это ваш собственный DDoS.
Повторяйте подписки
Сервер не помнит, на что вы были подписаны. После auth отправьте subscribe заново.
Сверьтесь с REST
После долгого обрыва прочитайте позиции и заявки через REST: события, случившиеся без соединения, не будут повторены.
https://docs.lootx.trade/ru/api/ws-channels