Che cos’è una disconnessione?
Stabilire una connessione alle API di streaming significa effettuare una richiesta HTTPS di lunga durata e analizzare la risposta in modo incrementale. Quando ci si connette all’endpoint filtered stream, è consigliabile inviare una richiesta HTTPS e consumare lo stream risultante per tutto il tempo possibile. I nostri server manterranno la connessione aperta a tempo indeterminato, salvo errori lato server, eccessivo ritardo lato client, problemi di rete, manutenzione ordinaria del server o accessi duplicati. Con le connessioni agli endpoint di streaming, è probabile — e ci si dovrebbe aspettare — che si verifichino disconnessioni e che venga implementata la logica di riconnessione.Perché una connessione in streaming può disconnettersi
- Un errore di autenticazione (ad esempio un token errato o l’uso di un metodo di autenticazione non corretto).
- Un server di streaming viene riavviato lato X. Di solito è correlato a un deploy del codice ed è un evento prevedibile da considerare in fase di progettazione.
- Il client non riesce a tenere il passo con il volume di Post che lo stream sta recapitando oppure legge i data troppo lentamente. Ogni connessione di streaming è supportata da una coda di messaggi destinati al client. Se questa coda cresce troppo nel tempo, la connessione verrà chiusa.
- L’account ha superato la quota giornaliera/mensile di Post.
- Sono presenti troppe connessioni ridondanti attive.
- Un client smette improvvisamente di leggere i data. Se il ritmo di Post letti dallo stream cala bruscamente, la connessione verrà chiusa.
- Possibili problemi di rete tra server e client.
- Un problema temporaneo lato server, manutenzione o aggiornamenti programmati. (Consulta la status page)
Tra gli errori di disconnessione più comuni figurano:
Prevedere le disconnessioni e riconnettersi
- Il tuo codice dovrebbe rilevare quando smettono di arrivare nuovi contenuti e il segnale di keep-alive.
- In tal caso, il tuo codice dovrebbe attivare la logica di riconnessione. Alcuni client e linguaggi permettono di impostare un timeout di lettura, che puoi fissare a 20 secondi.
- Il tuo servizio dovrebbe rilevare queste disconnessioni e riconnettersi il prima possibile.
- Esegui un backoff lineare per errori di rete a livello TCP/IP. Questi problemi sono generalmente temporanei e tendono a risolversi rapidamente. Aumenta il ritardo tra le riconnessioni di 250 ms a ogni tentativo, fino a 16 secondi.
- Esegui un backoff esponenziale per errori HTTP per i quali la riconnessione è appropriata. Inizia con un’attesa di 5 secondi, raddoppiando a ogni tentativo, fino a 320 secondi.
- Esegui un backoff esponenziale per errori HTTP 429 Rate limit exceeded. Inizia con un’attesa di 1 minuto e raddoppia a ogni tentativo. Nota che ogni HTTP 429 ricevuto aumenta il tempo di attesa necessario finché il limite di velocità non sarà più in vigore per il tuo account.
Recupero dei dati persi
Limiti di velocità e utilizzo
- x-rate-limit-limit indica il numero di richieste assegnate che il tuo client può effettuare nella finestra di 15 minuti.
- x-rate-limit-remaining indica il numero di richieste effettuate finora nella finestra di 15 minuti.
- x-rate-limit-reset è un timestamp UNIX che indica quando la finestra di 15 minuti verrà riavviata, reimpostando x-rate-limit-remaining a 0.