

# Gestione degli errori nell'SDK di trasmissione Web IVS \| Streaming in tempo reale
<a name="broadcast-web-error-handling"></a>

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
<a name="web-error-handling-stage-errors"></a>

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.<br />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.<br />Per la maggior parte degli errori relativi alla stabilità della rete, l'SDK riproverà internamente per un periodo massimo di 30 secondi prima di emettere un errore FAILED.  | 
| CANCELED (ANNULLATO) | 5 | Controlla il codice dell'applicazione e assicurati che non vi siano invocazioni `join`, `refreshStrategy` o `replaceStrategy` ripetute, che potrebbero causare l'avvio e l'annullamento di operazioni ripetute prima del completamento. | 
| STAGE\_AT\_CAPACITY | 6 | Questo errore indica che lo stage o l'account sono al massimo della capacità. Se lo stage ha raggiunto il limite di partecipanti, prova a eseguire nuovamente l'operazione quando lo stage non è più a piena capacità aggiornando la strategia. Se il tuo account ha raggiunto la quota di abbonamenti o publisher simultanei, riduci l'utilizzo o richiedi un aumento della quota tramite la [console AWS Service Quotas.](https://console.aws.amazon.com/servicequotas/)  | 
| 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. | 
| STAGE\_DELETED | 9 | Nessuno; il tentativo di entrare in uno stage eliminato attiva questo errore. | 
| PARTICIPANT\_DISCONNESSO | 10 | Nessuno; il tentativo di partecipare con il token di un partecipante disconnesso attiva questo errore. | 

### Esempio di gestione di StageError
<a name="web-error-handling-stage-errors-example"></a>

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
<a name="web-error-handling-stage-errors-network"></a>

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
<a name="web-error-handling-errored-states"></a>

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.

### Pubblica
<a name="errored-states-publish"></a>

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
<a name="errored-states-subscribe"></a>

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
  }
});
```