> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.6mm.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.6mm.com/_mcp/server.

# Подключение, подписка и сердцебиение

Используйте WebSocket потоки для рыночных данных и частных обновлений состояния пользователя, которые должны оставаться актуальными без опросов.

<h2 id="connection-url">
  Связь URL
</h2>

```text
wss://ws.6mm.com/ws
```

Приватные потоки требуют контекста аутентификации, такого как listenKey или токен доступа, как описано в документации по частному каналу.

<h2 id="subscribe">
  Подписаться
</h2>

```json
{ "id": "1772007814666", "op": "subscribe", "args": ["market.depth.BTCUSDT"] }
```

Успешное подтверждение подписки:

```json
{
  "id": "1772007814666",
  "event": "subscribe",
  "success": true,
  "data": ["market.depth.BTCUSDT"]
}
```

<h2 id="unsubscribe">
  Отписаться
</h2>

```json
{ "id": "1772007814667", "op": "unsubscribe", "args": ["market.depth.BTCUSDT"] }
```

<h2 id="application-ping">
  Применение пинга
</h2>

```json
{ "id": "1772007814668", "op": "ping", "args": [] }
```

<h2 id="message-envelope">
  Конверт для сообщений
</h2>

Публичные продвижения используют единую границу:

```json
{
  "topic": "market.depth.BTCUSDT",
  "event": "data",
  "ts": 1772007815000,
  "data": {}
}
```

<h2 id="operational-recommendations">
  Оперативные рекомендации
</h2>

* Создать уникальный клиентский `id` для каждого запроса подписки, отписки и пинга.
* Воспринимайте повторное подключение как новую сессию и заново подписывайтесь на необходимые темы.
* Проверьте, что возвращаемый `topic` совпадает с каналом, которого ожидает ваш сервис.
* Сохранять обработку сообщений идемпотентной, если речь идёт о частных заказах или событиях аккаунта.
* Изменения состояния подключения журналов, подтверждения подписки и аномальные разрывы соединения.

<h2 id="reconnect-workflow">
  Рабочий процесс повторного подключения
</h2>

1. Закройте или отключите предыдущую розетку и создайте новое соединение.
2. Повторная аутентификация частных потоков с помощью действительного listenKey или токена доступа.
3. Подпишитесь на все необходимые темы и ждите успешных подтверждений.
4. Замените локальное состояние книги заказов на новый снимок перед введением постепенных обновлений.
5. Согласовать открытые ордеры, позиции и балансы через REST , если частные события могли быть пропущены.

Используйте ограниченный экспоненциальный откат с джиттером для попыток повторного подключения. Клиент, постоянно переподключающийся, должен предупреждать операторов, а не бесконечно пытаться без видимости.

<h2 id="heartbeat-and-stale-connections">
  Сердцебиение и застоявшиеся связи
</h2>

* Отслеживать самое свежее входящее сообщение и успешное подтверждение пинга.
* Используйте интервал сердцебиения и порог ожидания, одобренные для производственной среды.
* Считать соединение устаревшим, если настроенный порог превышен, даже если TCP разъём всё ещё открыт.
* Не использовать повторно подписки из старого сокета; Обязательно подписывайтесь после каждого повторного подключения.

<h2 id="related-documentation">
  Связанная документация
</h2>

* [Каналы публичного рынка](/ru/developer-api/websocket/public-market-channels): темы, непрерывность книги заказов, сделки, свечи и тикеры.
* [Private User Channel](/ru/developer-api/websocket/private-user-channel): listenKey жизненный цикл и аутентифицированные события.
* [Рекомендации по интеграции](/ru/developer-api/integration-recommendations): повторные испытания, идентификационность, мониторинг и испытания при запуске.