如何在客户端和服务器之间发送和接收相同的图像?

Pan*_*sis 5 javascript bandwidth

我正在尝试实施带宽测试,看起来最常规的方法是在客户端和服务器之间来回传输一个或多个图像,看看上传和下载时间是多少.事实上,这个答案已经涵盖了获取下载时间的想法.

但是,在这一点上,我不太确定如何使用或不使用其他答案来使流程双向进行.即使在添加调试语句之后,我还没有找到图片数据存储在其他答案代码中的位置.如果我尝试从一个干净的平板开始,我在Internet/Stack Overflow上发现的很多关于来回发送图像的API信息几乎没有解释或详细说明,所以我无法使用它把两者放在一起.此外,我将有时涉及其他平台的一些实验放在一起似乎真正限制了带宽使用,以及根据图像的大小不正确地缩放延迟.

使用JavaScript,您如何在客户端和服务器之间来回传输相同的图像,以便您可以准确地使用延迟和图像的大小来测量带宽?如何使用相同的图像,无需限制,并且没有用户的交互,这两种方式都可以工作?

编辑

我可以尝试发布我尝试过的东西,但它很难有意义.其中很多都是在Flash中.当我开始使用JavaScript时,我开始尝试这些方面:

$.get('http://ip address/test.php?filename=XXX&data=LONG STRING OF DATA REPRESTING THE DATA TO BE SAVED PROBABLY LESS THAN 2K IN SIZE AND ALSO YOU SHOULD ESCAPE OR ATLEAST URIENCODE IT', function(data) {
    alert('here')
   eval(data);
});
Run Code Online (Sandbox Code Playgroud)

PHP文件是:

<?php
    echo "response=here";
?>
Run Code Online (Sandbox Code Playgroud)

我将PHP文件用于Flash和JavaScript.我还使用Adobe Media Server和Flash.但是在使用Flash/PHP时,从1MB文件到32MB文件,Flash只会将延迟缩放10倍,远不及32.它似乎也至少在与AMS配对时限制带宽使用,甚至可能与PHP文件配对.

我准备转换JavaScript代码以将实际图像传递到PHP文件...但我无法达到它.即使我做的事情如下:

for (var s in download) {
    alert(s + ": " + download[s]);
}
Run Code Online (Sandbox Code Playgroud)

download作为在JavaScript中下载图像的对象(参见代码的链接答案),我没有看到任何有用的东西. download.children.length是0等等.我也不愿意相信结果不会限制带宽使用,就像Flash实验那样,没有进一步的确认; 也许图像必须使用一种类型的API调用或其他类型来传递,以使其真正正常工作?

从本质上讲,我真的在寻找好的API信息.我看到的其他东西并不精确,无法连接点.

2ND编辑

我遇到的一个陷阱是使用POST来下载图像.我在使IIS 7允许POST下载具有 "异常"二进制字符的任意文件类型(即jpgs)允许它们大小超过2MB 时遇到了很多困难.

Max*_*Max 0

为什么不使用 $.post 发送一些文本。例如:生成一些大文本:

var someText = '0123456789';
for (var i = 0; i <= 10000; i++)
{
    someText += someText;
}
Run Code Online (Sandbox Code Playgroud)

然后将其发布到服务器:

var start = new Date();
$.post('yourUrl', {data:someText}, function(){
    var end = new Date();
    //this will show the bytes per second upload bandwidth
    alert(someText.length / ((end - start)/1000));
});
Run Code Online (Sandbox Code Playgroud)

为了确保结果准确,您可以运行该命令(例如,运行 10 次)并获取平均值。