NetworkInformation.downlink
を利用して、インターネット回線速度を示すメガビット毎秒単位の数値を取得できます。
navigator.connection.downlink; // 8.85
Webビーコンのような少量データの通信では、回線速度の速さよりも応答遅延の短さが重要です。NetworkInformation.rtt
により応答遅延をミリ秒単位で取得できます。
navigator.connection.rtt; // 50
でもこれらの値からは、速いのか遅いのかが伝わりづらいです。そこで、回線速度の程度を文字列で表したNetworkInformation.effectiveType
を使ってみましょう。
navigator.connection.effectiveType; // "4g"
effectiveTypeのしきい値
downlink | rtt | effectiveType | 説明 |
---|---|---|---|
条件: 回線速度[Mbps] | 条件: 応答遅延[ms] | 出力: 種類(推測) | |
0.05以下 | 2000以上 | slow-2g | テキストデータの転送にしか向かない |
0.07以下 | 1400以上 | 2g | アイコンファイルの転送にも耐えうる |
0.7以下 | 270以上 | 3g | 中〜大サイズの画像や音声、低解像度動画の転送にも耐えうる |
0.7超 | 0以上 | 4g | 高解像度動画の転送にも耐えうる |
downlink
プロパティ値が1.3
(4gクラス)、rtt
プロパティ値が500
(3gクラス)の場合、低速な方が優先されて3g
が出力されました。
データ元はNetwork Information APIの仕様書ですが、そのデータは稀に更新されます。2017年6月6日から26日の間に現在のデータになりましたが、それ以前は以下の通りでした。
downlink | rtt | effectiveType |
---|---|---|
条件: 回線速度[Mbps] | 条件: 応答遅延[ms] | 出力: 種類(推測) |
0.05以下 | 1900以上 | slow-2g |
0.07以下 | 1300以上 | 2g |
0.7以下 | 200以上 | 3g |
0.7超 | 0以上 | 4g |
参考リンク