実際に rtmpconnection を切断できるかどうか、またその方法を知っていますか? 公式ドキュメントにも rtmpconnection.lzx にも「切断」メソッドはありません。rtmp 接続を切断する方法を知っている場合は、お知らせください。前もって感謝します。
1 に答える
OpenLaszloの<rtmpconnection> クラスは、ActionScript 3 NetConnectionクラスを使用してサーバーに接続します。NetConnection クラスにはメソッド close()があります。これに関するドキュメントは次のとおりです。
ローカルまたはサーバーに対して開いていた接続を閉じ、NetConnection.Connect.Closed のコード プロパティで netStatus イベントを送出します。
このメソッドは、接続を介して実行されているすべての NetStream オブジェクトを切断します。送信されていないキュー内のデータは破棄されます。(接続を閉じずにローカル ストリームまたはサーバー ストリームを終了するには、NetStream.close() を使用します。) 接続を閉じてから新しい接続を作成する場合は、新しい NetConnection オブジェクトを作成し、connect() メソッドを再度呼び出す必要があります。
また、close() メソッドは、この接続を介して実行されているすべてのリモート共有オブジェクトを切断します。ただし、再接続するために共有オブジェクトを再作成する必要はありません。代わりに、SharedObject.connect() を呼び出すだけで、共有オブジェクトへの接続を再確立できます。また、NetConnection.close() を発行したときにキューに入れられた共有オブジェクト内のデータは、共有オブジェクトへの接続を再確立した後に送信されます。
Flash Media Server での開発のベスト プラクティスは、クライアントがサーバーへの接続を必要としなくなったときに close() を呼び出すことです。close() を呼び出すことは、未使用の接続をクリーンアップする最速の方法です。バックアップ手段として、アイドル状態の接続を自動的に閉じるようにサーバーを構成できます。
<rtmpconnection> の LZX ソース コードでは、接続に失敗した場合にのみ NetConnection.close() が呼び出されることがわかります。
<!--- Handle connection failure, attempt to reconnect using altsrc
@keywords private -->
<method name="_handleConnectionFailure" args="msg"><![CDATA[
this._nc.close();
if (this.debug) {
if ($debug) Debug.warn("error connecting to", this._connecturl, ":", msg);
}
....
<rtmpconnection> クラスに close メソッドが定義されていない理由はわかりませんが、 <rtmpconnection> を拡張して close メソッドを追加することで、そのコードを自分で追加できます。状態変数を正しく処理するようにしてください。
Red5 を長い間使用していないため、Red5 がアイドル状態の NetConnection を自動的に閉じるかどうかはわかりません。