0

私は NetConnection オブジェクトを持っています:

myNetConnection = new NetConnection();
myNetConnection.addEventListener(NetStatusEvent.NET_STATUS, statusHandler);
myNetConnection.connect("rtmp://address");

そしてハンドラでこれを行います:

private function statusHandler(event:NetStatusEvent):void
            {
                switch (event.info.code)
                {
                    case "NetConnection.Connect.Success": 
                    {
                        trace("ok");
                        break;
                    }
                    case "NetConnection.Connect.Failed":
                    {
                        trace("Some problems, NetConnection.Connect.Failed");
                        break;
                    }
                }
            }

したがって、すべて問題がなければ、デバッグ コンソールに "ok" が表示されます。しかし、何か問題がある場合 - "いくつかの問題、NetConnection.Connect.Failed" 長い間待った後に表示されます。私の質問 - 「いくつかの問題、NetConnection.Connect.Failed」をより速く (「OK」として) 表示するにはどうすればよいですか?

4

2 に答える 2

2

ほとんどの場合、できません。イベントは可能な限り迅速にトリガーされます。それ自体が現れるまでに長い時間がかかっているのは接続障害です。

問題は、接続の試行がタイムアウトすることです。Flash は接続を試みてタイマーを設定します。接続が確立される前にタイマーが起動した場合、Flash はリソースが利用できないと判断します。タイマーが起動するまで接続は失敗しないため、すぐに失敗することはありません。

サーバーが数ミリ秒以内に応答する場合もあれば、数秒かかる場合もあるため、Flash はリソースが利用できないことをすぐに通知することはできません。

于 2011-04-07T07:55:20.750 に答える
2

ここでの問題は、Flash Player が通常のプロトコル (RTMP、ポート 1935) でサーバーに接続できない場合、フォールバック プロトコルとポートを使用して自動的に接続を確立しようとすることです。通常のシーケンスは次のとおりです。

netConnection.connect("rtmp://myserver/myapp"); // デフォルトのポート 1935 を使用 netConnection.connect("rtmp://myserver:443/myapp"); netConnection.connect("rtmp://myserver:80/myapp"); netConnection.connect("rtmpt://myserver:80/myapp");

このすべての試行により、接続の最終的なタイムアウトが増加します。

この自動再試行シーケンスは、最初の接続で RTMP プロトコルが指定され、デフォルトのポート (my_nc.connect("rtmp://myserver/myapp") など) が使用されている場合にのみ発生します。

詳細については、こちらをご覧ください。

于 2011-04-07T08:14:16.330 に答える