Gestione degli errori nell'SDK di trasmissione Web IVS | Streaming in tempo reale
Questa sezione fornisce una panoramica delle condizioni di errore, del modo in cui l'SDK di trasmissione per web le segnala all'applicazione e di cosa dovrebbe fare un'applicazione quando si verificano tali errori. Gli errori vengono segnalati dall'SDK ai listener dell'evento StageEvents.ERROR
:
stage.on(StageEvents.ERROR, (error: StageError) => { // log or handle errors here console.log(`${error.code}, ${error.category}, ${error.message}`); });
Errori di fase
Se l'SDK rileva un problema da cui non può essere ripristinato viene segnalato uno StageError, la cui risoluzione in genere richiede l'intervento dell'app e/o la riconnessione di rete.
Ogni StageError
segnalato ha un codice (o StageErrorCode
), un messaggio (stringa) e una categoria (StageErrorCategory
). Ciascuno è correlato a una categoria operativa sottostante.
La categoria di operazione dell'errore viene determinata in base al fatto che sia correlata alla connessione alla fase (JOIN_ERROR
), all'invio di file multimediali alla fase (PUBLISH_ERROR
) o alla ricezione di un flusso multimediale in entrata dalla fase (SUBSCRIBE_ERROR
).
La proprietà codice di uno StageError
riporta il problema specifico:
Nome | Codice | Operazione consigliata |
---|---|---|
TOKEN_MALFORMED |
1 |
Crea un token valido e prova a riavviare l'istanza della fase. |
TOKEN_EXPIRED |
2 |
Crea un token non scaduto e prova a riavviare l'istanza della fase. |
TIMEOUT |
3 |
Timeout dell'operazione. Se la fase esiste e il token è valido, l'errore è probabilmente un problema di rete. In tal caso, attendi il ripristino della connettività del dispositivo. |
Non riuscito |
4 |
Durante il tentativo di intervento si è verificata una condizione fatale. Verifica i dettagli dell'errore. Se la fase esiste e il token è valido, l'errore è probabilmente un problema di rete. In tal caso, attendi il ripristino della connettività del dispositivo. |
CANCELED (ANNULLATO) |
5 |
Controlla il codice dell'applicazione e assicurati che non vi siano invocazioni |
STAGE_AT_CAPACITY |
6 |
Prova a eseguire nuovamente l'operazione quando la fase non è più a piena capacità aggiornando la strategia. |
CODEC_MISMATCH |
7 |
Il codec non è supportato dalla fase. Controlla il supporto del codec per il browser e la piattaforma. Per lo streaming in tempo reale IVS, i browser devono supportare il codec H.264 per il video e il codec Opus per l'audio. |
TOKEN_NOT_ALLOWED |
8 |
Il token non dispone dell'autorizzazione per l'operazione. Ricrea il token con le autorizzazioni corrette e riprova. |
Esempio di gestione di StageError
Utilizza il codice StageError per determinare se l'errore è dovuto a un token scaduto:
stage.on(StageEvents.ERROR, (error: StageError) => { if (error.code === StageError.TOKEN_EXPIRED) { // recreate the token and stage instance and re-join } });
Errori di rete quando è già stato effettuato l'accesso
Se la connessione di rete del dispositivo si interrompe, l'SDK potrebbe perdere la connessione ai server della fase. È possibile che vengano visualizzati errori nella console perché l'SDK non è più in grado di raggiungere i servizi di backend. I POST su https://broadcast.stats.live-video.net falliranno.
Se stai pubblicando e/o ti stai iscrivendo, vedrai errori nella console relativi ai tentativi di pubblicazione/sottoscrizione.
Internamente, l'SDK proverà a riconnettersi con una strategia di backoff esponenziale.
Azione: attendi il ripristino della connettività del dispositivo.
Stati con errore
Ti consigliamo di utilizzare questi stati per la registrazione delle applicazioni e per mostrare agli utenti dei messaggi che li avvisano in merito ai problemi di connettività alla fase per un determinato partecipante.
Pubblicare
L'SDK segnala ERRORED
quando una pubblicazione non va a buon fine.
stage.on(StageEvents.STAGE_PARTICIPANT_PUBLISH_STATE_CHANGED, (participantInfo, state) => { if (state === StageParticipantPublishState.ERRORED) { // Log and/or display message to user } });
Subscribe
L'SDK segnala ERRORED
quando una sottoscrizione fallisce. Ciò può verificarsi a causa delle condizioni della rete o se uno stage ha raggiunto la capacità massima di abbonati.
stage.on(StageEvents.STAGE_PARTICIPANT_SUBSCRIBE_STATE_CHANGED, (participantInfo, state) => { if (state === StageParticipantSubscribeState.ERRORED) { // Log and/or display message to user } });