[解決済み】インターネット接続がオフラインになったことを検出しますか?
質問
JavaScriptでインターネット接続がオフラインであることを検出する方法は?
どのように解決するのですか?
を行うことで、接続が切れたと判断することができます。 XHRリクエストの失敗 .
標準的な方法としては リクエストの再試行 を数回実行します。 もし通らなかったら ユーザーに警告する で接続を確認し 優雅に失敗する .
補足 アプリケーション全体をオフラインの状態にすることは、状態を処理する上で多くのエラーを起こしやすい作業につながるかもしれません。 そのため、最善の方法は、ただ優雅に失敗し、データを保存し、ユーザーに警告することかもしれません。
補足 googleのような信頼できるサイトで接続性を確認することもできますが、Googleは利用できても自分のアプリケーションは利用できない可能性があり、接続の問題を自分で処理しなければならないため、自分でリクエストしようとするだけでは全く意味がないかもしれません。 googleにpingを送信してみることは、インターネット接続自体がダウンしていることを確認する良い方法でしょうから、その情報が役に立つのであれば、手間をかける価値はあるのかもしれませんね。
補足説明
:
Pingを送信する
は、あらゆる種類の双方向のajaxリクエストを行うのと同じ方法で実現できますが、この場合、googleにpingを送信することは、いくつかの課題を提起することになります。 まず、Ajax通信でよくあるクロスドメイン問題が発生します。 ひとつの方法として、サーバーサイドのプロキシを設定することで、実際に
ping
Google(または任意のサイト)にPingを打ち、その結果をアプリに返します。これは
キャッチ-22
インターネット接続に問題がある場合は、サーバーにアクセスできませんし、接続に問題があるのが自ドメインだけであれば、その違いを見分けることができないからです。例えば、google.comを指すiframeをページに埋め込んで、iframeの成否をポーリングする(内容を調べるなど)、といったクロスドメイン的な手法も考えられます。 画像を埋め込んでも何もわからないかもしれません。何が起こっているのかについて良い結論を出すためには、通信メカニズムからの有用な応答が必要だからです。 このように、インターネット接続の状態を総合的に判断することは、かえって面倒なことかもしれません。 このようなオプションは、特定のアプリのために重み付けをする必要があります。
関連
-
[解決済み】Uncaught TypeError: nullのプロパティ'value'を読み取ることができない
-
[解決済み】Uncaught ReferenceError。Reactが定義されていない
-
[解決済み] テスト
-
[解決済み】XMLパースエラー:ルート要素が見つからない コンソールの場所 FF
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptでメールアドレスを検証するのに最適な方法は何ですか?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み】別のウェブページにリダイレクトするにはどうすればいいですか?
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】document.getElementByIDは関数ではありません。
-
[解決済み】Uncaught TypeError: nullのプロパティ'value'を読み取ることができない
-
[解決済み】別のjsファイル内でJavaScriptの関数を呼び出す
-
[解決済み】Redux TypeError: 未定義のプロパティ 'apply' を読み取れない
-
[解決済み】XMLパースエラー:ルート要素が見つからない コンソールの場所 FF
-
[解決済み】Vueのテンプレートまたはレンダー関数が定義されていない 私はどちらも使っていないのですが?
-
[解決済み】ETIMEDOUTエラーの対処方法は?
-
[解決済み] [Solved] Uncaught Invariant Violation: 前のレンダリング中よりも多くのフックをレンダリングする
-
[解決済み】Javascript、[オブジェクトHTMLInputElement]を表示中。]
-
[解決済み】jQueryでインターネット接続があるかどうか確認する?重複