Мы работаем над продуктом, в котором задействовано лицензирование.Он построен на ядре ReactionJS, Redux, Asp.net, а также использует Signalr для широковещательной рассылки сообщений клиенту.
Лицензия считается следующим:
- Предопределенное значение для максимального числа браузеров.продукт может войти с.
- Всякий раз, когда пользователь входит в браузер, будет использоваться лицензия.
- Всякий раз, когда пользователь выходит из браузера, лицензия будет освобождена.
Всякий раз, когда приложениеоткрывается из того же браузера, где пользователь уже вошел в систему, он переходит к экрану по умолчанию.(локальное хранилище используется для проверки, вошел ли пользователь в систему)
Все хорошо, пока пользователь не обновит или не закроет вкладку напрямую.Когда открыта только одна вкладка и если она закрывается, мы планируем выйти из системы и уменьшить количество лицензий.
В componentWillmount мы использовали приведенную ниже логику (событие окна «beforeunload») для уменьшения количества лицензий.
window.addEventListener("beforeunload", (event) => {
this.props.deleteThisTabFromLocalStorage();
if(tabsCountFromLocalStorage == 0){
this.props.ReleaseLicence();
this.props.Logout(); // This method contains redirection to login route. and deleting access tokens from localstorage.
}
});
Ожидается, что beforeunload будет вызываться только при закрытии браузера.Но когда вкладка обновляется, даже в этом случае вызывается событие beforeunload и приложение выходит из системы.
Может кто-нибудь подсказать, как различать события закрытия и обновления браузера?