Rnd*_*d_d 6 flash networking actionscript-3
我有一个我无法理解的问题.
为了理解它,我在AS3上编写了一个套接字客户端,在python/twisted上编写了一个服务器,你可以在下面看到这两个应用程序的代码.
让我们同时启动两个客户端,安排它们,以便您可以在两个窗口中看到两个窗口并按下连接按钮.然后按住任何按钮.
我期待的是:
按下按钮的客户端向服务器发送消息"某些数据",然后服务器将此消息发送给所有客户端(包括原始发件人).
然后每个客户端向右移动按钮'connectButton'并按照以下格式随时间向日志打印消息:"min:secs:milliseconds".
出了什么问题:
在发送消息的客户端中运动是平滑的,但在所有其他客户端中,运动是不稳定的.
发生这种情况是因为发送给这些客户端的邮件的时间晚于原始发送客户端 如果我们有三个客户端(让我们将它们命名为A,B,C)并且我们从A发送消息,则B和C的发送时间日志将是相同的.
为什么其他客户端比原始发件人晚收到此邮件?
顺便说一句,在ubuntu 10.04/chrome上,所有动作都很流畅.两个客户在分开的chromes中推出.
日志列表,同时列出四个客户端:
[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
Run Code Online (Sandbox Code Playgroud)
AS3客户端代码,我只留下相关部分,完整代码在这里.
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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1416 次 |
| 最近记录: |