Testuję aplikację offline HTML5. Aby to zrobić, zatrzymuję mój lokalny serwer WWW (IIS) i otwieram aplikację. Ładuje się dobrze, ale nie udało się, gdy tylko zażąda metody API po stronie serwera.HTML5/JS - sprawdź, czy aplikacja jest nieaktywna
Chcę temu zapobiec i zamiast $ .get ("/ api/method") odczytać dane z mojej lokalnej pamięci. Ale mogę znaleźć dowolny obiekt, aby zrozumieć, że moja aplikacja jest w trybie offline.
if (/* online */) {
// fire ajax
} else {
// ask localstorage
}
Próbowałem użyć navigation.onLine
ale wydaje się być zawsze prawdziwe (przynajmniej widzę, że w Chrome).
Czy masz jakieś sugestie?
EDYCJA: uwzględnienie bieżących odpowiedzi. Aplikacja wyraźnie rozumie, że jest offline, ponieważ pobiera zasoby zgodnie z cache.manifest. To dla mnie śmieszne, że klient musi robić wszelkiego rodzaju sztuczki i pingi. Zakładam, że powinien istnieć łatwy sposób sprawdzenia bieżącego trybu.
spróbuj spojrzeć na źródła upshot.js. wdrożyli to zachowanie. – mironych
Nie ma łatwego sposobu sprawdzenia, ponieważ nie ma łatwego sposobu, aby dowiedzieć się, co stanowi "online". Interfejs sieciowy może być podniesiony, urządzenie/komputer może być w sieci, ale jeśli ta sieć nie ma połączenia z Internetem, to czy jesteś online lub offline? To zależy od tego, czy aplikacja jest w Internecie, czy w intranecie. Co się stanie, jeśli masz dostęp do Internetu, ale Twoja aplikacja jest blokowana przez reguły zapory sieciowej, czy Twoja aplikacja jest dostępna online czy offline? Najłatwiejszym sposobem sprawdzenia * jest * pewien rodzaj pingowania. – robertc
@robertc Twój komentarz ma dla mnie wiele sensu, dzięki! –