IVS Web Broadcast SDK でのエラー処理 | Real-Time Streaming
このセクションでは、エラー状態の概要、Web Broadcast SDK がエラー状態をアプリケーションに報告する方法、およびエラー発生時にアプリケーションが実行する処理について説明します。エラーは SDK によって StageEvents.ERROR
イベントのリスナーに報告されます。
stage.on(StageEvents.ERROR, (error: StageError) => { // log or handle errors here console.log(`${error.code}, ${error.category}, ${error.message}`); });
ステージエラー
StageError は、SDK が復旧できない問題に遭遇したときに報告され、通常、アプリケーションの介入やネットワークの再接続が必要になります。
報告されたそれぞれの StageError
には、コード (または StageErrorCode
)、メッセージ (文字列)、カテゴリ (StageErrorCategory
) があります。それぞれが基盤となるオペレーションカテゴリに関連しています。
エラーのオペレーションカテゴリは、ステージへの接続 (JOIN_ERROR
)、ステージへのメディアの送信 (PUBLISH_ERROR
)、またはステージからの受信メディアストリームの受信 (SUBSCRIBE_ERROR
) のどちらに関連しているかに基づいて決定されます。
StageError
のコードプロパティは、特定の問題をレポートします。
名前 | コード | [Recommended Action] (推奨されるアクション) |
---|---|---|
TOKEN_MALFORMED |
1 |
有効なトークンを作成し、ステージのインスタンス化を再試行してください。 |
TOKEN_EXPIRED |
2 |
有効期限が切れていないトークンを作成し、ステージのインスタンス化を再試行します。 |
タイムアウト |
3 |
オペレーションがタイムアウトしました。ステージが存在し、トークンが有効である場合、この障害はネットワークの問題である可能性があります。この場合は、デバイスの接続が回復するまでお待ちください。 |
FAILED |
4 |
オペレーションの試行中に致命的な状態が発生しました。エラーの詳細を確認してください。 ステージが存在し、トークンが有効である場合、この障害はネットワークの問題である可能性があります。この場合は、デバイスの接続が回復するまでお待ちください。 |
CANCELED |
5 |
アプリケーションコードをチェックし、繰り返し |
STAGE_AT_CAPACITY |
6 |
戦略を更新して、ステージの負荷が最大限から下がったら、オペレーションを再試行してください。 |
CODEC_MISMATCH |
7 |
コーデックはステージではサポートされていません。コーデックのサポートについては、ブラウザとプラットフォームを確認してください。IVS Real-Time Streaming の場合、ブラウザはビデオ用の H.264 コーデックとオーディオ用の Opus コーデックをサポートしている必要があります。 |
TOKEN_NOT_ALLOWED |
8 |
トークンにはオペレーションに対するアクセス許可がありません。トークンを正しいアクセス許可で再作成し、再試行してください。 |
StageError の処理の例
StageError コードを使用して、エラーが期限切れのトークンによるものかどうかを判断します。
stage.on(StageEvents.ERROR, (error: StageError) => { if (error.code === StageError.TOKEN_EXPIRED) { // recreate the token and stage instance and re-join } });
既に参加している場合のネットワークエラー
デバイスのネットワーク接続が切断されると、SDK と Stages サーバーとの接続が失われる可能性があります。SDK がバックエンドサービスにアクセスできなくなるため、コンソールにエラーが表示される場合があります。https://broadcast.stats.live-video.net への POST は失敗します。
公開中/サブスクライブ中の場合は、公開/サブスクライブの試行に関連するエラーがコンソールに表示されます。
SDK は、エクスポネンシャルバックオフストラテジーを使用して内部で再接続を試みます。
アクション: デバイスの接続が回復するまでお待ちください。
エラー状態
これらの状態は、アプリケーションのログ記録に使用し、特定の参加者のステージへの接続の問題を通知するメッセージをユーザーに表示することをお勧めします。
公開
SDK は公開が失敗したときに ERRORED
を報告します。
stage.on(StageEvents.STAGE_PARTICIPANT_PUBLISH_STATE_CHANGED, (participantInfo, state) => { if (state === StageParticipantPublishState.ERRORED) { // Log and/or display message to user } });
Subscribe
SDK はサブスクライブが失敗したときに ERRORED
を報告します。これは、ネットワークの状態が原因で発生する可能性がありますが、ステージがサブスクライバーのキャパシティに達した場合にも発生することがあります。
stage.on(StageEvents.STAGE_PARTICIPANT_SUBSCRIBE_STATE_CHANGED, (participantInfo, state) => { if (state === StageParticipantSubscribeState.ERRORED) { // Log and/or display message to user } });