Qu’est-ce qu’une déconnexion ?
Pourquoi une connexion de streaming peut être interrompue
- Une erreur d’authentification (comme un jeton incorrect ou l’utilisation d’une méthode d’authentification incorrecte).
- Un serveur de streaming est redémarré côté X. Cela est généralement lié à un déploiement de code et doit en général être anticipé et pris en compte dans votre conception.
- Votre client ne parvient pas à suivre le volume de Publications que le flux fournit ou lit les données trop lentement. Chaque connexion de streaming est adossée à une file d’attente de messages à envoyer au client. Si cette file d’attente devient trop grande au fil du temps, la connexion sera fermée.
- Votre compte a dépassé votre quota quotidien/mensuel de Publications.
- Vous avez trop de connexions redondantes actives.
- Un client cesse soudainement de lire les données. Si le rythme de lecture des Publications à partir du flux chute soudainement, la connexion sera fermée.
- D’éventuels problèmes réseau entre le serveur et le client.
- Un problème temporaire côté serveur, une maintenance planifiée ou des mises à jour (consultez la page d’état).
Anticiper les déconnexions et se reconnecter
- Votre code doit détecter lorsque le contenu récent et le signal de maintien de connexion cessent d’arriver.
- Si cela se produit, votre code doit déclencher une logique de reconnexion. Certains clients et langages vous permettent de spécifier un délai d’expiration de lecture (read timeout), que vous pouvez définir à 20 secondes.
- Votre service doit détecter ces déconnexions et se reconnecter dès que possible.
- Utilisez un backoff linéaire pour les erreurs réseau au niveau TCP/IP. Ces problèmes sont généralement temporaires et ont tendance à se résoudre rapidement. Augmentez le délai entre les reconnexions de 250 ms à chaque tentative, jusqu’à 16 secondes.
- Utilisez un backoff exponentiel pour les erreurs HTTP pour lesquelles une reconnexion est appropriée. Commencez par une attente de 5 secondes, en doublant à chaque tentative, jusqu’à 320 secondes.
- Utilisez un backoff exponentiel pour les erreurs HTTP 429 (Rate limit exceeded). Commencez par une attente de 1 minute et doublez à chaque tentative. Notez que chaque HTTP 429 reçu augmente le temps que vous devez attendre avant que la limitation de débit ne soit plus appliquée à votre compte.
Récupération des données perdues
Limites de taux et utilisation
- x-rate-limit-limit indique le nombre de requêtes allouées que votre client est autorisé à effectuer pendant une fenêtre de 15 minutes.
- x-rate-limit-remaining indique le nombre de requêtes effectuées jusqu’à présent dans cette fenêtre de 15 minutes.
- x-rate-limit-reset est un horodatage UNIX indiquant quand la fenêtre de 15 minutes redémarrera, réinitialisant x-rate-limit-remaining à 0.
Meilleures pratiques de reconnexion
Tester les stratégies de backoff
Alertes en cas de reconnexions multiples
Gérer les changements de DNS
User Agent
user-agent inclut la version du client. Cela sera essentiel pour diagnostiquer les problèmes du côté de X. Si votre environnement ne permet pas de renseigner l’en-tête user-agent, utilisez alors un en-tête x-user-agent.