¿Qué es una desconexión?
Por qué una conexión de streaming podría desconectarse
- Un error de autenticación (como usar un token incorrecto o un método de autenticación equivocado).
- Se reinicia un servidor de streaming en el lado de X. Esto suele estar relacionado con un despliegue de código y, en general, debe esperarse y contemplarse en el diseño.
- Tu cliente no puede mantenerse al ritmo del volumen de Publicaciones que el stream está entregando o está leyendo los datos demasiado lentamente. Cada conexión de streaming está respaldada por una cola de mensajes que se enviarán al cliente. Si esta cola crece demasiado con el tiempo, la conexión se cerrará.
- Tu cuenta superó tu cuota diaria/mensual de Publicaciones.
- Tienes demasiadas conexiones redundantes activas.
- Un cliente deja de leer datos de repente. Si la tasa de Publicaciones que se leen del stream cae de forma repentina, la conexión se cerrará.
- Posibles problemas de red entre el servidor y el cliente.
- Un problema temporal del lado del servidor, tareas de mantenimiento programadas y actualizaciones. (Consulta la página de estado)
Anticiparse a las desconexiones y reconectarse
- Tu código debe detectar cuándo dejan de llegar tanto contenido nuevo como la señal de keep-alive.
- Si eso sucede, tu código debe activar una lógica de reconexión. Algunos clientes y lenguajes te permiten especificar un tiempo de espera de lectura (
read timeout), que puedes configurar en 20 segundos. - Tu servicio debe detectar estas desconexiones y reconectarse tan pronto como sea posible.
- Aplica un backoff lineal para los errores de red a nivel TCP/IP. Estos problemas suelen ser temporales y tienden a resolverse rápidamente. Aumenta el retraso entre reconexiones en 250 ms en cada intento, hasta 16 segundos.
- Aplica un backoff exponencial para los errores HTTP para los cuales sea apropiado reconectar. Comienza con una espera de 5 segundos, duplicando cada intento, hasta 320 segundos.
- Aplica un backoff exponencial para los errores HTTP 429 “Rate limit exceeded”. Comienza con una espera de 1 minuto y duplícala en cada intento. Ten en cuenta que cada HTTP 429 recibido aumenta el tiempo que debes esperar hasta que el límite de uso deje de aplicarse a tu cuenta.
Recuperar datos perdidos
Límites de tasa y uso
- x-rate-limit-limit indica el número de solicitudes asignadas que tu cliente puede realizar durante la ventana de 15 minutos.
- x-rate-limit-remaining indica el número de solicitudes realizadas hasta el momento en la ventana de 15 minutos.
- x-rate-limit-reset es una marca de tiempo UNIX que indica cuándo se reiniciará la ventana de 15 minutos, restableciendo x-rate-limit-remaining a 0.
Buenas prácticas de reconexión
Probar estrategias de backoff
Alertas de incidencias por múltiples reconexiones
Gestionar cambios de DNS
User Agent
user-agent incluya la versión del Client. Esto será fundamental para diagnosticar problemas del lado de X. Si tu entorno no permite establecer el campo user-agent, configura entonces un encabezado x-user-agent.