检测我手机上的互联网连接类型

detect internet connection type on my mobile

本文关键字:互联网 连接 类型 手机 检测      更新时间:2023-09-26

我需要在他们的移动设备上发送视频给我的客户端,但每个客户端以不同的方式连接到互联网,有慢连接,有快,我有2个版本的视频,所以我可以发送小的慢连接和大的快。

setInterval(function(){
    if(navigator.onLine){
        $("body").html("Connected.");
    }else{
        $("body").html("Not connected.");
    }
},1000);

上面的代码返回是否连接。

问题是:

有办法检测互联网连接类型上我的手机?比如3G、WIFI……等。

您可以编写类似的代码。

var imageAddr = "http://www.tranquilmusic.ca/images/cats/Cat2.JPG" + "?n=" + Math.random();
    var startTime, endTime;
    var downloadSize = 5616998;
    var download = new Image();
    download.onload = function () {
        endTime = (new Date()).getTime();
        showResults();
    }
    startTime = (new Date()).getTime();
    download.src = imageAddr;
    function showResults() {
        var duration = (endTime - startTime) / 1000; //Math.round()
        var bitsLoaded = downloadSize * 8;
        var speedBps = (bitsLoaded / duration).toFixed(2);
        var speedKbps = (speedBps / 1024).toFixed(2);
        var speedMbps = (speedKbps / 1024).toFixed(2);
        alert("Your connection speed is: 'n" + 
               speedBps + " bps'n"   + 
               speedKbps + " kbps'n" + 
               speedMbps + " Mbps'n" );
    }​

您可以使用此代码来检测客户端网速。你无法检测到连接类型。一个256+ kb的文件足以检测速度

只有当平台公开了一些特定的API,但它不是暴露给JavaScript的常规浏览器API的一部分时,您才能这样做。所以简短的回答是:不。

另一种方法是向一个已知大小的文件发出请求,看看传输需要多长时间,从中可以推断出连接的速度,但这意味着额外的流量,所以一定要选择好文件(它应该很小,这样就不会产生太多的移动流量,但也不要太小,这样你就不会从下载中获得任何有用的信息)。

不幸的是,这可能不会告诉你太多,因为作为移动设备,客户端可能随时从一个连接切换到另一个完全不同的连接。更重要的是,在完全相同的连接上,从服务器接收数据所需的时间每秒钟都可能有很大的不同,这取决于影响移动客户机的许多因素。因此,如果这是一个视频应用程序,这真的应该由服务器控制,如果服务器看到发送的数据包太少,它应该决定降低视频的质量。有些媒体服务器就是这样做的,比如Red5、Wowza或Adobe media Server。

一种方法是请求文件并查看下载需要多长时间。

如果你的客户使用的是移动设备,那么你的网站每多下载一个字节就会让他们付出代价。此外,有许多因素会影响下载文件所需的时间,"连接类型"只是其中之一。

最初的问题没有区分(A)下载和(B)上传的连接速度(是的,他需要将视频发送给最终用户,但也许这是用户刚刚上传的视频)。可接受的答案对于测量下载速度很有用。

为了提高上传速度,可以考虑在隐藏表单的隐藏表单字段中嵌入base64编码的图像。另外,创建一个隐藏iframe,并将隐藏表单定位到隐藏iframe中。通过javascript提交隐藏表单,将当前时间存储在JS变量中。在结果页面上,当onload触发时,通过javascript在iframe和它的父窗口之间进行通信,发送onload事件触发的时间。比较开始时间和结束时间,然后除以传输的字节数

为了遵守浏览器的同源策略,你需要让iframe中的文档与包含iframe的窗口中的文档处于同一域。