私は理解できない問題があります。私はあなたが以下の両方のアプリケーションのコードを見ることができ、AS3とツイストパイソン/上のサーバにソケットクライアントを書いて、それを理解することがStrange Flash AS3 xmlソケットの動作
。
あなたは両方のウィンドウと両方のウィンドウで記者接続ボタンを見ることができるようにそれらを配置し、のは、同時に2つのclientsを起動してみましょう。その後、いずれかのボタンを押し続けます。私は期待してい何
:
クライアントを押されたボタンでは、サーバーは、(元の送信者を含む)すべてのクライアントにこのメッセージを送信し、サーバに「いくつかのデータを」メッセージを送信します。
次に、各クライアントには、「connectButton」右ボタンを移動し、次の形式で時間をログにメッセージを出力します。「分:秒:ミリ秒」。
間違って起こっている:
運動は、メッセージを送信するクライアントでは、滑らかであるが、他のすべてのクライアントに動きがぎくしゃくです。
これは、これらのクライアントへのメッセージが元の送信クライアントよりも遅れて到着するためです。そして、3つのクライアント(A、B、Cと名づけましょう)があり、Aからメッセージを送信すると、BとCの送信時刻ログは同じになります。
他のクライアントが、後に元の送信者よりも、このメッセージを受け取るのはなぜ?ところで
は、Ubuntuの10.04 /クローム上のすべての動きがスムーズです。 2つのクライアントが別々のクロムで起動します。
同時にログのリスト、4つのクライアント:
[16:29:33.280858] 62.140.224.1 >> some data
[16:29:33.280912] 87.249.9.98 << some data
[16:29:33.280970] 87.249.9.98 << some data
[16:29:33.281025] 87.249.9.98 << some data
[16:29:33.281079] 62.140.224.1 << some data
[16:29:33.323267] 62.140.224.1 >> some data
[16:29:33.323326] 87.249.9.98 << some data
[16:29:33.323386] 87.249.9.98 << some data
[16:29:33.323440] 87.249.9.98 << some data
[16:29:33.323493] 62.140.224.1 << some data
[16:29:34.123435] 62.140.224.1 >> some data
[16:29:34.123525] 87.249.9.98 << some data
[16:29:34.123593] 87.249.9.98 << some data
[16:29:34.123648] 87.249.9.98 << some data
[16:29:34.123702] 62.140.224.1 << some data
AS3のクライアントコード、私は関連部分のみ、full code hereを残しました。
private var socket :XMLSocket;
socket = new XMLSocket();
socket.addEventListener(DataEvent.DATA, dataHandler);
private function dataHandler(event:DataEvent):void
{
var now:Date = new Date();
textField.appendText(event.data + " time = " + now.getMinutes() + ":" + now.getSeconds() + ":" + now.getMilliseconds() + "\n");
connectButton.x += 2;
}
private function keyDownHandler(event:KeyboardEvent):void
{
socket.send("some data");
}
private function connectMouseDownHandler(event:MouseEvent):void
{
var connectAddress:String = "ep1c.org";
var connectPort:Number = 13250;
Security.loadPolicyFile("xmlsocket://" + connectAddress + ":" + String(connectPort));
socket.connect(connectAddress, connectPort);
}
ここではちょっと考えましたが、SWFオブジェクトにHTMLのフォーカスがない場合、低いフレームレートで動作するという印象を受けます。これは "不安定さ"を説明しますが、ubuntu/chrome上ではうまくいきました。これは、セットアップでフラッシュプレーヤーになる可能性があります。同じマシンではなく、異なるマシン間で試してみましたか?私はぼんやりと速度が2FPSくらいまで大幅に下がることを読んで覚えています –
ありがとう、私はubuntuと2つの異なるマシンを試しました。私は2つの異なるマシン(すべてのクライアントに焦点を当てています)で2つのクライアントを実行しているとき、そのクライアントはどのようにデータが不安定な動きと悪い時間ログを持っているかを質問します。 –