Closed dazy1030 closed 3 years ago
機内モードで接続を遮断する
1〜3 のときはスムーズにいって。機内モードで接続を遮断するとうまくいかないという理解で良いでしょうか? WiFi -> 4G -> WiFi のテストとiOS12/13のときのテストで終わっていました。
開発者も意図はしていないのでただのバグになり。解決方法は現在のところはなさそうです。
遅くの時間にありがとうございます
1〜3 のときはスムーズにいって。機内モードで接続を遮断するとうまくいかないという理解で良いでしょうか?
そうですね。記載させていただいた問題をもっと利用者目線に言うと、配信中になんらかの原因で接続が切れてそこから復帰しづらい、といった感じです。確かに初回で失敗した試しはないですね。
どうやらRTMPNWSocketの問題ではなかったようなので、タイトルと内容に一部変更を加えました。 RTMPの仕様をまだちゃんと把握できていませんが、おそらく切断前のストリームが削除されていない状態で同じ名前でストリームを作成しようとしているのが原因な気がします。
徐々にRTMPの仕様を理解してきて、不具合でないことがわかりました。
処理が漏れていて気がついていなかったのですが、8.
の NetConnection.Connect.Success の後に NetStream.Publish.BadName
を受信していました。
これは同じ名前のストリームで公開しようとした時に起こるエラーのようで、前のストリームがサーバー目線でまだ生きているという判定の時に起こるエラーでした。前のストリームはタイムアウトで死んだとみなされるため、BadName を受信した場合は成功するまで Publish を繰り返せば良いというのが正しい再接続の方法のようでした。
理解不足のままissue化してしまい失礼しました。解決したためcloseさせていただきます。
Describe the bug
requireNetworkFramework
を true にしてRTMPNWSocket を利用している~NetConnection.Connect.Closed
になった後に再接続を行うと、NetConnection.Connect.Success
まではいけるがpublish(_:)
のメソッドを呼んでもNetStream.Publish.Start
にならない場合があるTo Reproduce
requireNetworkFramework
を trueに~connect(_:)
を呼びRTMP接続を行うNetConnection.Connect.Success
な状態になったらRTMPStreamのpublish(_:)
を呼びストリームを流し始めるNetConnection.Connect.Closed
の状態になったら、RTMPConnection のconnect(_:)
を呼びRTMP接続を試みるconnect(_:)
を呼ぶと接続できるまで繰り返す)NetConnection.Connect.Success
の状態になったらRTMPStreamのpublish(_:)
を呼ぶNetStream.Publish.Start
の状態にならず、ストリームも流れていないExpected behavior
NetConnection.Connect.Success
の後にpublish(_:)
を呼ぶことでストリームを再度流すことができるSmartphone:
Additional context Logboard で収集した役に立ちそうなログを記載します
+++
から始まる行は、addEventListener
で受信したRTMPStatusです