"Хибернация" таба в браузере вызывает зависания после пробуждения
От: VladCore  
Дата: 01.04.19 21:44
Оценка:
Возмем к примеру такой сценарий работы страницы в браузере:

По WebSocket-у периодически сервер присылает данные.
На странце

// conection - это signalR если что
this.connection.on("ReceiveUpdate", dataSource => {
    // Обновляем DOM используя полученный json
    Actions.DataSourceUpdated(dataSource);
});


Все прекрасно работает часами пока таба со страницей активная.
Но стоит уйти на другой таб НА ПЯТЬ минут и по возвращении на табу это таба ЗАВИСАЕТ.

Какого эти изобретатели гибернации не смогли сделать настроиваемой. или полностью вырубать WebSocket вместе с хибернацией или дать API про статус гибернации. Например так:

// conection - это signalR/webSocket клиент если что
this.connection.on("ReceiveUpdate", dataSource => {
    if (!window.isHypernated) {
        // Обновляем DOM используя полученный json
        Actions.DataSourceUpdated(dataSource);
    }
});


P.S. Если серверный push поменять на древний poll по таймеру в браузере то такой проблемы НЕТ. Т.е. по олдскульному POLL хибернация ничего не ломает.

P.P.S если будут конструктивные ответы, перенесите в Web-программирование please.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.