> 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

Usa 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 contexto de autenticación como un listenKey o token de acceso, 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">
  Darse de baja
</h2>

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

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

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

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

Los impulsos públicos usan un sobre consistente:

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

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

* Generar un `id` único del lado del cliente para cada solicitud de suscripción, cancelación 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 se involucran eventos privados de orden o cuenta.
* Cambios en el estado de la conexión, acuses de recibo de suscripción y desconexiones anormales.

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

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

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

<h2 id="heartbeat-and-stale-connections">
  Latidos y conexiones ranciadas
</h2>

* Rastrear el mensaje entrante más reciente y el reconocimiento de ping exitoso.
* Usar 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 apareciendo abierto.
* No reutilizar suscripciones de un socket antiguo; Suscribe de nuevo explícitamente después de cada reconexión.

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

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