P2P каналы

Каналы для получения данных P2P торговли в реальном времени.

Важно: P2P WebSocket использует протокол Socket.IO v4, который отличается от основного Exchange WebSocket.

Подключение

URL:

wss://hub.abcex.io/socket.io/?token=JWT_TOKEN&EIO=4&transport=websocket

Параметры:

ПараметрОписание
tokenJWT токен авторизации
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 пары

СимволОписание
USDTRUBUSDT / Российский рубль
USDTUSDUSDT / Доллар США
USDTEURUSDT / Евро
USDTTRYUSDT / Турецкая лира
USDTKZTUSDT / Казахстанский тенге
USDTKGSUSDT / Киргизский сом
USDTGELUSDT / Грузинский лари
USDTGBPUSDT / Британский фунт
USDTCNYUSDT / Китайский юань
USDTAZNUSDT / Азербайджанский манат
USDTAMDUSDT / Армянский драм
RUBRUBRUB / Российский рубль

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"
}]

Поля:

ПолеТипОписание
symbolstringСимвол торговой пары
tradeIdstringID сделки
pricestringЦена
amountstringСумма в фиате
sidestringСторона: buy / sell
timestampstringВремя сделки

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"
}]

Поля:

ПолеТипОписание
advertisementIdstringID объявления
symbolstringСимвол торговой пары
sidestringСторона: buy (покупка крипты) / sell (продажа крипты)
pricestringЦена за 1 USDT
minAmountstringМинимальная сумма сделки
maxAmountstringМаксимальная сумма сделки
availableAmountstringДоступный остаток
paymentMethodsarrayСпособы оплаты
statusstringСтатус: active / inactive / completed
updatedAtstringВремя обновления

Пример подключения (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");
});