web-dev-qa-db-ja.com

HTML5 / JavaScriptを使用して接続タイプ(WiFi / LAN / WWAN)を確認するにはどうすればよいですか?

クライアントがWWAN(従量制)接続などで接続されている場合、特定のWebサイトを低帯域幅バージョンに合わせたいと思います。

接続タイプは、サイトが豊富なエクスペリエンスを提供すべきか、帯域幅効率の良いエクスペリエンスを提供すべきかを知るために重要です。私のデスクトップは従量制接続で動作し、将来的には、より多くのデスクトップが従量制セルラーネットワーク(Windows 8タブレットPCを含む)を介して接続されます。効率的なWebアプリは、ユーザーがペイパーバイト接続。

クライアントがHTML5/JavaScriptを使用してWiFi/LAN/WWAN経由で接続されているかどうかを確認するにはどうすればよいですか?

注:ブラウザーヘッダーを明示的に確認することは望ましくありません(複数の方法でインターネットに接続できるデスクトップブラウザーのソリューションではありません)。

22
Chris

見る - navigator.connection (プレフィックス)。このAPIは、クライアントの帯域幅に関する情報を公開します。

16
Rob W

できません。クライアントがサーバーにどのように接続されているか(つまり、バイトごとの支払いまたは定額料金の場合、どのテクノロジーを使用するか)に関する情報は公開されていません。トレースルートを取得できる場合があります(トレースに関連するすべての問題を含む)、それが役立つ場合、その情報はJavaScriptにアクセスできません。

JSでできることは、単純な帯域幅テストです。 XHRを介して既知のサイズのファイルをダウンロードし、必要な時間を測定します。

接続の有料モデルは、絶対的なプライベートデータです。インターネット上のサーバーに送信されることも、ロードされたWebサイトで使用することもできません。クライアントにカスタムアプリを提供するためにこの情報が必要な場合は、直接ユーザーに尋ねてください。彼が望むなら彼はあなたに言うでしょう。


それでも、待ってください。 Latest ChromeとFirefoxを設定して(ユーザー設定)、そのデータを 実験navigator.connectionオブジェクト

また、Metroアプリを開発するために、Windowsは Windows.Networking.Connectivity AP​​Iこのチュートリアル を参照してください。

6
Bergi

たぶん、あなたは間違った方法でそれに近づいています。 Gmailモデルをご覧ください。ページの読み込みに時間がかかっている場合は、ユーザーがオプトアウトできるリッチクライアントがあります。標準クライアントははるかに軽量で、より「伝統的な」Webデザインを使用します。
意図しないものを自動的に検出しようとすると、非常に深いウサギの穴に落ちてしまいます。

3
Gerard Sexton

古い質問ですが、自分の目的を探して、これを見つけました-私はまだ試していませんので、YMMV: https://github.com/ashanbh/detectClientSpeed

資産をダウンロードして帯域幅情報を取得する時間を測定するという根本的な概念は主観的であり、必ずしも一貫しているわけではありませんが、iOS/AndroidのネイティブプラットフォームAPIを除いて、これは悪い選択肢ではありません。より軽い代替案は、google.comのようなものへのping時間を測定することです。

2
Chrispy