我正在尝试使用 as3 中的套接字构建一个简单的延迟计。使用 Chromes Flash 播放器时,它可以在 Windows 和 Linux 和 OS X 上的 Chrome 中正常工作。但是当我在 Linux 或 OS X 上使用 Adobes Flash 播放器时,结果却很糟糕。
我的客户端设置是通过 100 Mbit/s 交换机限制 1 Gbit/s 互联网连接。在服务器端,我有一个 1 Gbit/s 互联网连接上的 Apache Web 服务器。
我下载了一个小 txt 文件,测量从我们发送 http-request 到我收到来自 Web 服务器的答复之间的时间。在测量响应时间时,使用数据包分析器,我平均为 1 毫秒,因此是基线。
所有测试均在版本 11.6.602.180 上执行,但 Ubuntu 上的 Adobe Flash 播放器是 11.2 r202 版本。Firefox 19.0.2 上的 Adobe 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 Adobe 平均 4.30 毫秒
Windows Chrome 平均。4.25 毫秒
OS X Adobe 66.67 毫秒
OS X Chrome 4.28 毫秒
Ubuntu Adobe 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
}
有什么想法可以解决这个问题吗?