Каналы для получения данных P2P торговли в реальном времени.
Важно: P2P WebSocket использует протокол Socket.IO v4, который отличается от основного Exchange WebSocket.
Подключение
URL:
wss://hub.abcex.io/socket.io/?token=JWT_TOKEN&EIO=4&transport=websocket
Параметры:
| Параметр | Описание |
|---|---|
token | JWT токен авторизации |
EIO | Версия Engine.IO (всегда 4) |
transport | Тип транспорта (всегда websocket) |
Формат сообщений Socket.IO
Handshake
После подключения сервер отправляет:
0{"sid":"yjTe8Lo1xlWvscEBAAjj","upgrades":[],"pingInterval":25000,"pingTimeout":20000,"maxPayload":1000000}
Подключение к namespace /p2p
Отправьте:
40/p2p
Ответ сервера:
40/p2p,{"sid":"jvoflA3xptN4-pfDAAjk"}
Подписка на каналы
42/p2p,["subscribe","{\"id\":0,\"method\":\"SUBSCRIBE\",\"params\":[\"USDTRUB@p2p-trade\",\"USDTRUB@p2p-market-enabled\",\"USDTRUB@p2p-market-disabled\",\"USDTRUB@p2p-advertisement-updated\"]}"]
Ответ:
42/p2p,["subscribe",{"$resourceTypeSocket":"SubscribeResultResourceSocketMessage","data":null,"id":0}]
Ping/Pong
- Сервер отправляет:
2 - Клиент отвечает:
3
Интервал: 25 секунд (см. pingInterval в handshake).
Доступные P2P пары
| Символ | Описание |
|---|---|
USDTRUB | USDT / Российский рубль |
USDTUSD | USDT / Доллар США |
USDTEUR | USDT / Евро |
USDTTRY | USDT / Турецкая лира |
USDTKZT | USDT / Казахстанский тенге |
USDTKGS | USDT / Киргизский сом |
USDTGEL | USDT / Грузинский лари |
USDTGBP | USDT / Британский фунт |
USDTCNY | USDT / Китайский юань |
USDTAZN | USDT / Азербайджанский манат |
USDTAMD | USDT / Армянский драм |
RUBRUB | RUB / Российский рубль |
SYMBOL@p2p-trade
Сделки P2P по торговой паре.
Замените SYMBOL на код пары, например USDTRUB.
Подписка:
42/p2p,["subscribe","{\"id\":0,\"method\":\"SUBSCRIBE\",\"params\":[\"USDTRUB@p2p-trade\"]}"]
Ответ:
42/p2p,["p2p-trade",{
"symbol": "USDTRUB",
"tradeId": "abc123...",
"price": "78.50",
"amount": "10000",
"side": "buy",
"timestamp": "2026-01-20T11:00:00.000Z"
}]
Поля:
| Поле | Тип | Описание |
|---|---|---|
symbol | string | Символ торговой пары |
tradeId | string | ID сделки |
price | string | Цена |
amount | string | Сумма в фиате |
side | string | Сторона: buy / sell |
timestamp | string | Время сделки |
SYMBOL@p2p-market-enabled
Уведомление о включении P2P рынка для торговой пары.
Замените SYMBOL на код пары.
Подписка:
42/p2p,["subscribe","{\"id\":0,\"method\":\"SUBSCRIBE\",\"params\":[\"USDTRUB@p2p-market-enabled\"]}"]
Ответ:
42/p2p,["p2p-market-enabled",{
"symbol": "USDTRUB",
"enabled": true,
"timestamp": "2026-01-20T11:00:00.000Z"
}]
SYMBOL@p2p-market-disabled
Уведомление о выключении P2P рынка для торговой пары.
Замените SYMBOL на код пары.
Подписка:
42/p2p,["subscribe","{\"id\":0,\"method\":\"SUBSCRIBE\",\"params\":[\"USDTRUB@p2p-market-disabled\"]}"]
Ответ:
42/p2p,["p2p-market-disabled",{
"symbol": "USDTRUB",
"enabled": false,
"reason": "maintenance",
"timestamp": "2026-01-20T11:00:00.000Z"
}]
SYMBOL@p2p-advertisement-updated
Обновление P2P объявления.
Замените SYMBOL на код пары.
Подписка:
42/p2p,["subscribe","{\"id\":0,\"method\":\"SUBSCRIBE\",\"params\":[\"USDTRUB@p2p-advertisement-updated\"]}"]
Ответ:
42/p2p,["p2p-advertisement-updated",{
"advertisementId": "adv123...",
"symbol": "USDTRUB",
"side": "sell",
"price": "78.50",
"minAmount": "1000",
"maxAmount": "100000",
"availableAmount": "50000",
"paymentMethods": ["bank_transfer", "sbp"],
"status": "active",
"updatedAt": "2026-01-20T11:00:00.000Z"
}]
Поля:
| Поле | Тип | Описание |
|---|---|---|
advertisementId | string | ID объявления |
symbol | string | Символ торговой пары |
side | string | Сторона: buy (покупка крипты) / sell (продажа крипты) |
price | string | Цена за 1 USDT |
minAmount | string | Минимальная сумма сделки |
maxAmount | string | Максимальная сумма сделки |
availableAmount | string | Доступный остаток |
paymentMethods | array | Способы оплаты |
status | string | Статус: active / inactive / completed |
updatedAt | string | Время обновления |
Пример подключения (JavaScript)
import { io } from "socket.io-client";
const token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...";
const socket = io("wss://hub.abcex.io", {
path: "/socket.io/",
query: { token },
transports: ["websocket"]
});
// Подключение к namespace /p2p
const p2p = socket.of("/p2p");
p2p.on("connect", () => {
console.log("Connected to P2P");
// Подписка на каналы
p2p.emit("subscribe", JSON.stringify({
id: 0,
method: "SUBSCRIBE",
params: [
"USDTRUB@p2p-trade",
"USDTRUB@p2p-advertisement-updated"
]
}));
});
p2p.on("p2p-trade", (data) => {
console.log("New P2P trade:", data);
});
p2p.on("p2p-advertisement-updated", (data) => {
console.log("Advertisement updated:", data);
});
p2p.on("disconnect", () => {
console.log("Disconnected from P2P");
});