0

我正在尝试使用 as3 中的套接字构建一个简单的延迟计。使用 Chromes Flash 播放器时,它可以在 Windows 和 Linux 和 OS X 上的 Chrome 中正常工作。但是当我在 Linux 或 OS X 上使用 Adob​​es Flash 播放器时,结果却很糟糕。

我的客户端设置是通过 100 Mbit/s 交换机限制 1 Gbit/s 互联网连接。在服务器端,我有一个 1 Gbit/s 互联网连接上的 Apache Web 服务器。

我下载了一个小 txt 文件,测量从我们发送 http-request 到我收到来自 Web 服务器的答复之间的时间。在测量响应时间时,使用数据包分析器,我平均为 1 毫秒,因此是基线。

所有测试均在版本 11.6.602.180 上执行,但 Ubuntu 上的 Adob​​e Flash 播放器是 11.2 r202 版本。Firefox 19.0.2 上的 Adob​​e Flash 播放器(对其他浏览器进行了类似的测试)和 Chrome 26.0.1410.43 上的 Google Flash 播放器。操作系统为 Windows 7 Enterprise(64 位)、Mac OS X 10.6.8(64 位)和 Ubuntu 12.10(64 位)。每个操作系统/播放器都经过 5 * 20 次测试。

Windows Adob​​e 平均 4.30 毫秒
Windows Chrome 平均。4.25 毫秒
OS X Adob​​e 66.67 毫秒
OS X Chrome 4.28 毫秒
Ubuntu Adob​​e 10.49 毫秒
Ubuntu Chrome 4.19 毫秒

doConnect();

private function doConnect():void{
    socket = new Socket(url,port);
    socket.addEventListener(Event.CONNECT, connectHandler);
    socket.addEventListener(ProgressEvent.SOCKET_DATA, socketDataHandler);
}
private function connectHandler(event:Event):void{
    writeln("GET " + path + " HTTP/1.1");
    writeln("Host: " + url);
    socket.flush();
    nStart = new Date().time;

}
private function writeln(str:String):void{
    str +=  "\n";
    socket.writeUTFBytes(str);
}
private function socketDataHandler(event:ProgressEvent):void{
    var latecy:Number = new Date().time - nStart; // latency in ms
}

有什么想法可以解决这个问题吗?

4

0 回答 0