Tell me more ×
Game Development Stack Exchange is a question and answer site for professional and independent game developers. It's 100% free, no registration required.

I have a problem which I can't understand.

To understand it I wrote a socket client on AS3 and a server on python/twisted, you can see the code of both applications below.

Let's launch two clients at the same time, arrange them so that you can see both windows and press connection button in both windows. Then press and hold any button.

What I'm expecting:

Client with pressed button sends a message "some data" to the server, then the server sends this message to all the clients(including the original sender) .

Then each client moves right the button 'connectButton' and prints a message to the log with time in the following format: "min:secs:milliseconds".

What is going wrong:

The motion is smooth in the client that sends the message, but in all other clients the motion is jerky.

This happens because messages to those clients arrive later than to the original sending client. And if we have three clients (let's name them A,B,C) and we send a message from A, the sending time log of B and C will be the same.

Why other clients recieve this messages later than the original sender?

By the way, on ubuntu 10.04/chrome all the motion is smooth. Two clients are launched in separated chromes.

windows screenshot

linux screenshot

Listing of log, four clients simultaneously:

[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 client code, I left only relevant part, 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);
        }

Python server code.

share|improve this question
Too much code, you could try to post only the relevant part, and if you feel like posting it all only posting it as a link (one more +1 and you should have enough rep, I guess?). – Lohoris Mar 19 '12 at 13:15
One more +1 for you. – Byte56 Mar 19 '12 at 19:10
thanks guys, I left only relevant part of as3 code. – Rnd_d Mar 20 '12 at 8:34
one guy answerd me right on [here][1] [1]: stackoverflow.com/questions/8940606/… – Rnd_d Apr 22 '12 at 9:13

Know someone who can answer? Share a link to this question via email, Google+, Twitter, or Facebook.

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Browse other questions tagged or ask your own question.