> 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.

# Conexión, suscripción y latido

Utiliza WebSocket flujos para datos de mercado y actualizaciones privadas del estado del usuario que deben mantenerse actualizadas sin necesidad de sondeos.

<h2 id="connection-url">
  Conexión URL
</h2>

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

Los flujos privados requieren un contexto de autenticación como un listenKey o un token de acceso, tal y como se describe en la documentación del canal privado.

<h2 id="subscribe">
  Suscríbete
</h2>

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

Reconocimiento de suscripción exitoso:

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

<h2 id="unsubscribe">
  Cancelar suscripción
</h2>

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

<h2 id="application-ping">
  Ping de la aplicación
</h2>

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

<h2 id="message-envelope">
  Sobre de mensajes
</h2>

Los empujes públicos utilizan un límite consistente:

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

<h2 id="operational-recommendations">
  Recomendaciones operativas
</h2>

* Generar una `id` única en el lado del cliente para cada solicitud de suscripción, baja y ping.
* Tratar la reconexión como una nueva sesión y volver a suscribirse a los temas requeridos.
* Validar que el `topic` devuelto coincida con el canal que espera tu servicio.
* Mantener el procesamiento de mensajes idempotente cuando hay eventos privados de orden o cuenta involucrados.
* Cambios en el estado de la conexión de registro, acuses de recibo de suscripción y desconexiones anormales.

<h2 id="reconnect-workflow">
  Flujo de trabajo de reconexión
</h2>

1. Cierra o descarta el socket anterior y crea una nueva conexión.
2. Re-autenticar flujos privados con un listenKey o token de acceso válido.
3. Suscribirse de nuevo a todos los temas requeridos y esperar los reconocimientos exitosos.
4. Sustituir el estado local del libro de órdenes por una nueva instantánea antes de aplicar actualizaciones incrementales.
5. Reconciliar órdenes abiertas, posiciones y saldos a través de REST si se han pasado por alto eventos privados.

Utiliza retroceso exponencial limitado con jitter para los intentos de reconexión. Un cliente que se reconecte continuamente debería alertar a los operadores en lugar de intentarlo indefinidamente sin visibilidad.

<h2 id="heartbeat-and-stale-connections">
  Latido cardíaco y conexiones rancio
</h2>

* Rastrear el mensaje entrante más reciente y el reconocimiento de ping exitoso.
* Utilizar el intervalo de latidos cardíacos y el umbral de reposo aprobados para el entorno de producción.
* Tratar una conexión como obsoleta cuando se supera el umbral configurado, incluso si el zócalo de TCP sigue abierto.
* No reutilizar suscripciones de un socket antiguo; volver a suscribirse explícitamente después de cada reconexión.

<h2 id="related-documentation">
  Documentación relacionada
</h2>

* [Canales de Mercado Público](/es-ES/developer-api/websocket/public-market-channels): temas, continuidad del libro de órdenes, operaciones, velas y tickers.
* [Canal de Usuario Privado](/es-ES/developer-api/websocket/private-user-channel): listenKey ciclo de vida y eventos autenticados.
* [Recomendaciones de Integración](/es-ES/developer-api/integration-recommendations): pruebas de intentos, idempotencia, monitorización y lanzamiento.