我需要发送视频给我的客户在他们的移动的,但每个客户端连接到互联网以不同的方式有慢连接,有快,我有2个版本的视频,所以我可以发送小的一个慢连接和大的快。
setInterval(function(){
if(navigator.onLine){
$("body").html("Connected.");
}else{
$("body").html("Not connected.");
}
},1000);
字符串
上面的代码返回是否连接。
现在的问题是:
有办法检测互联网连接类型在我的移动的?如3G,WIFI.等.
4条答案
按热度按时间2mbi3lxu1#
您可以编写类似于this的代码。
字符串
您可以使用此代码来检测客户端的互联网速度。您无法检测连接类型。一个256+ kb的文件足以检测速度。
lf3rwulv2#
只有当平台公开了某些特定的API时才能这样做,但它不是公开给JavaScript的常规浏览器API的一部分。
另一种方法是请求一个已知大小的文件,看看传输需要多长时间,从中可以推断出连接的速度,但这意味着额外的流量,所以一定要选择好文件(它应该很小,以免产生太多的移动的流量,但也不能太小,以至于你从下载中得不到任何有用的信息)。
不幸的是,这可能告诉不了你太多,因为,作为移动的,客户端很可能随时从一个连接切换到一个完全不同的连接。更重要的是,在完全相同的连接上,从服务器接收数据所花费的时间可能会在一秒到下一秒之间有很大的不同,这取决于影响移动的客户端的许多因素。所以,如果这是一个视频应用程序,这真的应该由服务器控制,如果服务器看到发送的数据包太少,它应该决定降低视频的质量。有媒体服务器可以这样做,例如Red5,Wowza或Adobe Media Server。
chhkpiq43#
一种方法是请求一个文件,然后看看下载需要多长时间。
如果您的客户端使用的是移动终端,那么您的网站下载的每一个额外字节都可能会花费他们。此外,有许多因素会影响下载文件所需的时间,“连接类型”只是其中之一。
但是,这种方法应该给予一个很好的近似值。
ssm49v7z4#
最初的问题没有区分(A)下载和(B)上传的连接速度(是的,他需要向最终用户发送视频,但可能是用户刚刚上传的视频)。接受的答案对于测量下载速度很有用。
为了提高上传速度,你可以考虑在隐藏表单的隐藏表单字段中嵌入一个base64编码的图像。同时创建一个隐藏的iframe,并将隐藏表单定位到隐藏的iframe中。通过JavaScript提交隐藏表单,将当前时间存储在JS变量中。在生成的页面上,当onload触发时,通过javascript在iframe和其父窗口之间进行通信,发送onload事件触发的时间。比较开始时间和结束时间,然后除以传输的字节数。
您需要让iframe中的文档与包含iframe的窗口中的文档位于同一个域中,以遵守浏览器的同源策略。