shiguredo / sora-ios-sdk

WebRTC SFU Sora iOS SDK
https://sora-ios-sdk.shiguredo.jp/
Apache License 2.0
42 stars 8 forks source link

一時的なNWダウン時のリカバリー手段 #13

Closed iPre-Innovate closed 6 years ago

iPre-Innovate commented 6 years ago

一時的なNWダウン時のリカバリー手段を模索しています

Wifiルータが落ちて、iOSが他のルータに切り替える様な十数秒程度の NW断に対応したいと考えています

上記の様なトラブル時のSoraのログを見ていると、disconnectエラーの発生時点(数秒の猶予も無く)でSoraが落ち、NWに再接続されてもSora自体は再接続しない仕組だと推測しています

---NW断時のSoraエラー開始----
2017-12-12 20:50:59 WebSocketChannel ERROR: disconnect error (操作を完了できませんでした。(Sora.SoraErrorエラー1))
2017-12-12 20:50:59 SignalingChannel ERROR: disconnect error (操作を完了できませんでした。(Sora.SoraErrorエラー1))

------途中省略-----

2017-12-12 20:50:59 PeerChannel ERROR: failed connecting to signaling channel (操作を完了できませんでした。(Sora.SoraErrorエラー1))
2017-12-12 20:50:59 PeerChannel ERROR: disconnect error (操作を完了できませんでした。(Sora.SoraErrorエラー4))
---NW断時のSoraエラー終了----

対処として MediaChannelHandlers.onDisconnectHandler(もしくはPeerChannelHandlers)にイベントハンドラを登録して、再接続が成功するまでconnectionTimeoutを長めに設定しつつSora.connect()を繰り返すのが良いかと考えています

もしここら辺で知見があれば教えていただければ助かります

環境

szktty commented 6 years ago

接続が解除された場合 Sora は再接続を行いません。現段階では Sora の仕様に従って SDK でも再接続を行う処理を実装する予定はありません。そのため、仰るようにイベントハンドラの利用が (疑似的な) 再接続を行う一つの手段として挙げられます。

ですが、確認したところ、一部のイベントハンドラが正しく呼ばれないとわかりました。修正した上で再接続に関するサンプルコードをドキュメントに追記しますので、ご面倒をおかけしますがしばらくお待ちください。

iPre-Innovate commented 6 years ago

ご確認ありがとうございます 修正をお持ちしています

szktty commented 6 years ago

Sora iOS SDK 2.0.3 をリリースしました。イベントハンドラの挙動を修正、整理しました。ご指摘頂いた SDWebImage のバージョン更新も含みます。

イベントハンドラを利用した再接続の一例は次のドキュメントを参照してください。再接続にはサーバーの負荷や状態によって、再接続が可能になるまでの時間が変動しますので、環境に合わせて調整してください。

https://sora.shiguredo.jp/ios-sdk-doc/devguide.html#id11

voluntas commented 6 years ago

@iPre-Innovate こちら、いかがでしょうか?