Witam mam pytanie, jak napisać rozwiązanie aby strona wyświetliła komunikat "brak wystarczającego połączenia z internetem" w chwili kiedy internet w telefonie jest słaby.
Co do znaczy że internet jest słaby? Nie ma LTE? Czy spada poniżej prędkości?
Nie wiem, czy z poziomu przeglądarki jesteś w stanie dostać się do informacji takich jak rodzaj połączenia , przez jaki się łączysz. Na pewno możesz strzelać do jakiegoś api i jak ci nie odpowie w odpowiednim czasie (dostaniesz timeouta) to pokazać komunikat.
Dzięki, a strzelać mam poprzez document.ready czy zwykły script ?
Raczej musisz ten skrypt odpalić albo w chwili, w której użytkownik chce coś wykonać (np. przesłać dane formularza na serwer), albo cyklicznie co jakiś czas sprawdzać. Bo document.ready
się wykona jeden raz po załadowaniu strony.
A skoro strona się załadowała, to chyba net działa :P
A jaki jest use case w tym przypadku? Bo jakoś mi się pomyślało, żeby w samochodach dodawać na desce komunikat "Twój samochód nie porusza się". Więc tutaj na tę chwilę widzę to podobnie i mam kilka pytań
- czy Twój użytkownik sam nie jest w stanie zobaczyć, że ma słaby internet?
- jak ten słaby internet może wpłynąć na Twoją appkę?
- co ma się dziać kiedy użytkownik będzie straci całkowicie internet - mówię tutaj o przeskokach typu "slaby internet->brak internetu" ? Co z sytuacją "Dobry internet -> brak internetu"?
- co Twoim zdaniem oznacza "brak wystarczającego połączenia" - to zbyt duży ping? utrata pakietów czy może po prostu niska prędkość? Dodam że te 3 rzeczy mogą występować w różnych kombinacjach.
- czy ten komunikat ma wyskakiwać na długo/krótko? Myślę tu o sytuacjach gdzie internet raz działa dobrze, raz źle i tak co kilka sekund się zmienia sytuacja.
- jakie parametry internetu to "wystarczające połączenie" ?
- jeśli użytkownik ściąga coś w tle lub jakkolwiek obciąża swoje łącze - to czy komunikat będzie wtedy poprawny?
To czy jest połączenie z internetem jest offline/online możesz sprawdzić za pomocą navigator.online
.
Możesz też użyć serviceworkera
, który będzie przechwytywał requesty, i w razie czego (kiedy połączenie jest offline) zwracał odpowiednią zawartość (z cache).
A co do jakości połączenia, istnieje coś takiego jak Network Information API
. Jeśli tego użyjesz, to zwraca parę rzeczy (rodzaj, prędkość itp.)
const networkInformation = navigator.connection;
console.log(networkInformation)
Jednak to jest dość nowe API, nie wszędzie jest dostępne (działa głównie na mobile)