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

时间:2015-04-16 14:49:04

标签: javascript bandwidth

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

在这一点上,我不太确定如何使这个过程双向进行,使用或不使用其他答案。即使在添加调试语句之后,我还没有找到图片数据存储在其他答案代码中的位置。如果我尝试从一个干净的平板开始,我在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);
});

PHP文件是:

<?php
    echo "response=here";
?>

我将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]);
}

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

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

2ND EDIT

我遇到的一个陷阱是使用POST来下载图像。我在使IIS 7允许POST下载任意文件类型(即jpgs) “不常见”的二进制字符允许它们出现时遇到很多困难超过2MB。

1 个答案:

答案 0 :(得分:0)

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

var someText = '0123456789';
for (var i = 0; i <= 10000; i++)
{
    someText += someText;
}

然后将其发布到服务器:

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));
});

为了确保结果是准确的,你可以运行它,例如,10次并获得平均值。