

# Tratamento de erros no SDK de Transmissão na Web do IVS \| Streaming em tempo real
<a name="broadcast-web-error-handling"></a>

Esta seção é uma visão geral das condições de erros, como o SDK de Transmissão para a Web os relata à aplicação e o que uma aplicação deve fazer quando esses erros são encontrados. Os erros são relatados pelo SDK aos receptores do evento `StageEvents.ERROR`:

```
stage.on(StageEvents.ERROR, (error: StageError) => {
    // log or handle errors here
    console.log(`${error.code}, ${error.category}, ${error.message}`);
});
```

## Erros de palco
<a name="web-error-handling-stage-errors"></a>

Um StageError é relatado quando o SDK encontra um problema do qual não consegue se recuperar e geralmente requer intervenção da aplicação e reconexão de rede para se recuperar.

Cada `StageError` relatado tem um código (ou `StageErrorCode`), uma mensagem (string) e uma categoria (`StageErrorCategory`). Cada um está relacionado a uma categoria de operação subjacente.

A categoria de operação do erro é determinada com base no fato de estar relacionada à conexão com o palco (`JOIN_ERROR`), ao envio de mídia para o palco (`PUBLISH_ERROR`) ou ao recebimento de um stream de mídia de entrada do palco (`SUBSCRIBE_ERROR`).

A propriedade de código de um `StageError` relata o problema específico:


| Nome | Código | Ação recomendada | 
| --- | --- | --- | 
| TOKEN\_MALFORMED | 1 | Crie um token válido e tente instanciar o palco novamente. | 
| TOKEN\_EXPIRED | 2 | Crie um token não expirado e tente instanciar o palco novamente. | 
| TIMEOUT | 3 | A operação expirou. Se o palco existir e o token for válido, essa falha provavelmente é um problema de rede. Nesse caso, aguarde até que a conectividade do dispositivo se recupere. | 
| FAILED | 4 | Uma condição fatal foi encontrada ao tentar uma operação. Verifique os detalhes do erro.<br />Se o palco existir e o token for válido, essa falha provavelmente é um problema de rede. Nesse caso, aguarde até que a conectividade do dispositivo se recupere.<br />Para a maioria das falhas relacionadas à estabilidade da rede, o SDK tentará novamente internamente por um período de até 30 segundos antes de emitir um erro FAILED.  | 
| CANCELED | 5 | Verifique o código da aplicação e certifique-se de que não haja invocações `join`, `refreshStrategy` ou `replaceStrategy` repetidas, que podem fazer com que operações repetidas sejam iniciadas e canceladas antes da conclusão. | 
| STAGE\_AT\_CAPACITY | 6 | Esse erro indica que o estágio ou sua conta está na capacidade máxima. Se o estágio atingiu seu limite de participantes, tente a operação novamente quando o estágio não estiver mais na capacidade máxima, atualizando a estratégia. Se sua conta atingiu sua cota de assinaturas ou publicadores simultâneos, reduza o uso ou solicite um aumento de cota por meio do [console de Service Quotas da AWS.](https://console.aws.amazon.com/servicequotas/)  | 
| CODEC\_MISMATCH | 7 | O codec não é compatível com o palco. Verifique se o navegador e a plataforma são compatíveis com o codec. Para streaming em tempo real do IVS, os navegadores devem ser compatíveis com o codec H.264 para vídeo e o codec Opus para áudio. | 
| TOKEN\_NOT\_ALLOWED | 8 | O token não tem permissão para a operação. Recrie o token com as permissões corretas e tente novamente. | 
| STAGE\_DELETED | 9 | Nenhum; a tentativa de ingressar em um estágio excluído aciona esse erro. | 
| PARTICIPANT\_DISCONNECTED | 10 | Nenhum; tentar entrar com um token de um participante desconectado aciona esse erro. | 

### Exemplo de tratamento de StageError
<a name="web-error-handling-stage-errors-example"></a>

Use o código StageError para determinar se o erro é devido a um token expirado:

```
stage.on(StageEvents.ERROR, (error: StageError) => {
    if (error.code === StageError.TOKEN_EXPIRED) {
        // recreate the token and stage instance and re-join
    }
});
```

### Erros de rede quando já ingressado
<a name="web-error-handling-stage-errors-network"></a>

Se a conexão de rede do dispositivo cair, o SDK poderá perder a conexão com os servidores dos palcos. Você pode ver erros no console porque o SDK não consegue mais acessar serviços de backend. POSTs em https://broadcast.stats.live-video.net falharão.

Se estiver publicando e/ou assinando, você verá erros no console relacionados a tentativas de publicação/assinatura.

Internamente, o SDK tentará se reconectar com uma estratégia de recuo exponencial.

**Ação**: aguarde até que a conectividade do dispositivo se recupere.

## Estados de erro
<a name="web-error-handling-errored-states"></a>

Recomendamos que você use esses estados para registro em log das aplicações e para exibir mensagens aos usuários que os alertem sobre problemas de conectividade no palco de um determinado participante.

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

O SDK relata `ERRORED` quando uma publicação falha.

```
stage.on(StageEvents.STAGE_PARTICIPANT_PUBLISH_STATE_CHANGED, (participantInfo, state) => {
  if (state === StageParticipantPublishState.ERRORED) {
      // Log and/or display message to user
  }
});
```

### Assinar
<a name="errored-states-subscribe"></a>

O SDK relata `ERRORED` quando uma assinatura falha. Pode ocorrer devido às condições da rede ou quando um estágio está lotado para assinantes.

```
stage.on(StageEvents.STAGE_PARTICIPANT_SUBSCRIBE_STATE_CHANGED, (participantInfo, state) => {
  if (state === StageParticipantSubscribeState.ERRORED) {
    // Log and/or display message to user
  }
});
```