Вы можете определить, что соединение потеряно, сделав неудачные запросы XHR .
Стандартный подход состоит в том, чтобы повторить запрос несколько раз. Если он не проходит, предупреждает пользователя , чтобы проверить соединение, и изящно терпит неудачу .
Sidenote: Перевод всего приложения в автономное состояние может привести к большой ошибочной работе с состоянием обработки. Беспроводные соединения могут приходить и уходить и т. Д. Так что ваш лучший выбор возможно, просто изящно потерпеть неудачу, сохранить данные и предупредить пользователя ... что позволит им в конечном итоге решить проблему с подключением, если она есть, и продолжать использовать ваше приложение с достаточным количеством прощения.
Sidenote: Вы можете проверить надежный сайт, такой как Google, на предмет подключения, но это может быть не совсем полезным, поскольку вы просто пытаетесь сделать свой собственный запрос, потому что, хотя Google может быть доступен, ваше собственное приложение может не быть, и вам все еще придется решать свои собственные проблемы с подключением. Попытка отправить пинг в Google была бы хорошим способом подтвердить, что интернет-соединение само не работает, поэтому, если эта информация вам полезна, то это может стоить проблем.
Sidenote : Отправка Ping может быть достигнута так же, как если бы вы делали любой двухсторонний AJAX-запрос, но в этом случае отправляете Ping в Google. , создаст некоторые проблемы. Во-первых, у нас будут те же междоменные проблемы, которые обычно возникают при установлении связи Ajax. Один из вариантов - настроить прокси на стороне сервера, в котором мы на самом деле ping
Google (или любой другой сайт), и вернуть результаты пинга в приложение. Это catch-22 , потому что если проблема связана с интернет-соединением, мы не сможем добраться до сервера, а если проблема с подключением только в нашем собственном домене, мы не будем быть в состоянии отличить Можно попробовать другие междоменные методы, например, встроить на свою страницу iframe, который указывает на google.com, а затем опросить iframe на предмет успеха / неудачи (проверить содержимое и т. Д.). Встраивание изображения может ничего не сказать нам, потому что нам нужен полезный ответ от коммуникационного механизма, чтобы сделать хороший вывод о том, что происходит. Итак, еще раз, определение состояния интернет-соединения в целом может быть больше проблем, чем оно того стоит. Вам придется взвесить эти опции для вашего конкретного приложения.