2

Я ищу URL-адрес, который я могу использовать, чтобы проверить, работает ли интернет.Самый грубый способ тестирования, если доступен интернет (google, aws и т. Д.)

Я могу проверить сервер с пикселем 1x1 (рекомендуется ниже), но как проверить, если интернет включен, но мой сервер отключен.

В моем приложении, я могу использовать эти два событие, о локальном сетевом интерфейсе (WiFi-AP), но не Интернет (шлюз, DNS, вверх по течению сети):

window.addEventListener('online', onNetworkUp, false); 
window.addEventListener('offline', onNetworkDown, false); 

Таким образом, я могу быть " онлайн ", но не подключен к Интернету.

Чтобы протестировать «Интернет», я могу выполнить ping мой сервер API, но также хочу проверить где-нибудь еще, у кого может быть лучшее SLA. Например. google, amazon и т. д.

Что является наименее грубым способом сделать это? Существует ли URL-адрес, который предполагается использовать таким образом?

Майк

ответ

1

Вот что я нашел. Невозможно получить эту информацию в браузере. Браузеры перегружают «онлайн», чтобы сделать реализации бессмысленными.

Мой вариант использования: Я хочу знать, может ли приложение достичь моего сервера и предложить другое поведение, если оно не может.

У меня было два способа сделать это.

  • Для репликации PouchDB, найдите отказы и предположите, что он не работает - при необходимости перезапустите. Я считаю, что socket.io имеет аналогичную функцию.

  • Когда я не PouchDB тиражирование, но желая продемонстрировать оффлайн-Несс приложение, я добавил путь к моему Экспресс сервера/r_u_up и опрашивается с этой библиотекой offline.js

И последнее note:/r_u_up может быть реализована на стороне сервера в Nginx, поэтому ему даже не нужен Node.js. Я еще не реализовал это, но этот подход будет похож на enabling the pre-flight OPTIONS requests. Он также должен work with other web servers.

Это то, что я изучаю!

1

Самый простой способ проверить, если вы подключены к Интернету с помощью navigator.onLine:

if (navigator.onLine) { 
    // you are online... do something 
} else { 
    // you're not online 
} 

Однако это не будет работать на локальном сервере, так что мой второй любимый способ (так что есть много способов сделать это), чтобы использовать любой веб-запрос (например, изображение) Добавление onerror события:

<img src='http://www.example.com/singlepixel.gif' onerror='offline();' /> 
<script> 
    function offline() { 
     alert('Internet offline!'); 
    } 
</script> 

Очевидно йо u должен сделать запрос к небольшому изображению, например 1x1px, так что, когда вы подключены к Интернету, загрузка не займет слишком много времени.

Или, если вы хотите использовать чистый Javascript:

function internetON() { 
    var xhr = new XMLHttpRequest(); 
    xhr.open('GET', 'http://www.example.com/singlepixel.gif', false); 
    xhr.send(); 
    return xhr.status === 200; 
} 

if (internetON()) { 
    // you are online... do something 
} else { 
    // you're not online 
} 
+0

Привет, Марко, когда мой ISP был выключен, navigator.onLine был правдой, но google.com был 404. Другое, что проверка https://www.google.com есть лучший способ? –

+0

@MichaelCole 404 не означает офлайн .. это означает «не найден». Кстати, просто сделайте XMLHttpRequest либо Google, либо другому сайту. Лучший способ сделать это - запросить изображение размером 1x1 пиксель, которое очень быстро загружается. –

+0

ОК, прохладно. Я искал такой URL. URL-адрес изображения 1x1 будет замечательным! –