質問・問題
WebSDK Ver3.xからVer4.xへの移行ガイドはありますか?
回答・解決方法
ございます。以下のガイドをご参照ください。
WebSDK Ver3.xからVer4.xへの移行時のガイド
Migrate from the Web SDK 3.x to 4.x
WebSDKVer4.xの参考情報
WebSDK Ver3.xからVer4.xへの移行時のよくある質問
( 1 ) 例外処理(エラーハンドリング)を移行する際の実装方法やサンプルコードはありますか?
WebSDK 4.x の API は Promise 型を返すようになっております。
APIをコール時にエラーハンドリングするには、Promise の結果が rejected の場合もしくは catch 構文で処理する形で実装します。
■ reject を使った例
localTracks.audioTrack.setMuted(false)
.then(() => {
console.log('ok');
}, error => {
console.log(error.message);
}
);
■ catch を使った例
getDevices().then(devices => {
console.log("first device id", devices[0].deviceId);
}).catch(e => {
console.log("get devices error!", e);
}
);
( 2 ) 音声や映像をミュートした場合、事前に音声や映像をアンパブリッシュする必要がありますか?
その必要はありません。
4.xでは音声や映像のミュート(又は解除)を実行後、SDK側で自動的にアンパブリッシュ(又はパブリッシュ)し、リモートユーザ側にコールバック(ミュート時はuser-unpublished、解除時はuser-published)が発生します。
( 3 ) 音声や映像をミュートするAPIは、setEnabledとsetMutedの2つがありますが、違いは何ですか?どちらを推奨しますか?
詳細は下記FAQをご参照ください。
WebSDK4.xのsetEnabled、setMutedの違いは何ですか?どちらを推奨しますか?
( 4 ) 映像をミュートした時、リモート側でミュートした映像の静止画が残ります。対応方法はありますか?
相手 (ブラウザ A) が映像をミュートした時、 (ブラウザB上で)ブラウザAの映像がミュート時の状態で止まって表示されます。
3.xの挙動(映像枠を含むエレメントから消える)と差異があります。
4.x では、相手 (ブラウザ A) がミュートしても (ブラウザ B 上では) 最後のフレームを残すユーザー要望が多かった背景があり、そのような挙動を採用いたしました。
対応方法としては、4.xでは映像をミュートするとリモート側(ブラウザB上)にコールバックする仕様(ミュート時はuser-unpublished、解除時はuser-published)になっております。それを利用して、ミュートイベントを検知し、映像枠を含むエレメントを何らかの形で非表示にする、黒い画像を映像の真上に重ねて表示させる実装ができます。
※サンプルコード・リファレンスは以下をご参照ください。
・setEnabledのサンプルコード