no.line

Real online/offline events

npm install no.line
4 downloads in the last month

Real online и offline events

В некоторых современных браузерах существуют специальные события online и offline. Но, к сожалению, они работают не так, как хотелось бы.

В Firefox и IE событие offline случается, когда пользователь вручную выберет Work Offline в меню. В Chrome offline означает, что нет ни одного активного сетевого интерфейса. Но даже если компьютер подключен к Wi-Fi сети, это не значит, что есть доступ в интернет. Хотя Chrome при этом будет считать, что он online.

Поэтому, чтобы на самом деле знать, есть ли доступ в интернет, приходится пинговать какой-нибудь урл и следить за ответами.

Что и делает эта простая библиотека:

no.line.init({
    url: '/ping/',
    interval: 10000
});

$(window)
    .on('no-online no-offline', function(e) {
        var is_online = (e.type === 'no-online');
        ...
    });

В no.line.init можно передать url, который нужно пинговать и interval между пингами. Дефолтные параметры:

{
    url: '/',
    interval: 5000
}

После вызова no.line.init можно подписаться на события no-online и no-offline, генерируемые на window.

Кроме того, библиотека поддерживает нативные события online/offline и Page Visibility API. Пингование останавливается, если страница не в фокусе или же в оффлайне.

npm loves you