Здравствуйте! Хочу изменять значение одной переменной (чтобы при уходе с сайта пользователь выходил из аккаунта).
Вот код js:
|
1 |
const express = require('express'); const app = express(); const path = require('path'); const fs = require('fs'); let mysql = require('mysql2/promise'); const config = require('./config'); let is_signed_in = false; if (!sessionStorage.getItem('status')) { is_signed_in = false; console.log('user went away'); } //далее в коде при входе в аккаунт is_signed_in становится true |
Идея такая, чтобы у каждого пользователя is_signed_in был с разным значением, но изначально false. Может это надо делать через бд для каждого пользователя отдельно??
Спасибо
Дополнительно:
Сразу вам скажу: на сервере ноды вы не сможете контролировать гугл-хранилища по типу sessionStorage, localStorage, а вот на клиенте на ванильном js можна отслеживать вкладку:
|
1 |
let tab = window.open("url"); let interval = setInterval(() => { if (tab.closed) { //Реализовуете выход когда вкладка закрыта clearInterval(interval); } }, 200); |
Правда, вам придётся каким то образом заставить пользователя оставить открытую вкладку которая проверяет другую
Это вообще костыльный способ, проблемма в том что программист не может отследить закрытие текущей вкладки((
Вот нашёл какое то решение(не проверял, но кажется что не будет всегда срабатывать):
https://qna.habr.com/q/339145
Для решения данной проблемы вы можете воспользоваться услугами фрилансеров. Мы выполним необходимую работу быстро и качественно.
Оставить комментарий Отменить
Ответы
- Есть ответ! к записи Как уменьшить масштаб меньше 100% в Windows 10 (22H2)
- Есть ответ! к записи Аналоги CloudFlare в России?
- Есть ответ! к записи Аналоги CloudFlare в России?
- Есть ответ! к записи Как называется человек, который дизайн придумает для сайта и сверстает его?
- Есть ответ! к записи Можно ли установить Яндекс.Диск на АльтЛинукс?
- Есть ответ! к записи Картинки мутные только на сафари, есть выход?
- Есть ответ! к записи Keenetic. Как настроить SSTP клиент с сертификатом?
- Есть ответ! к записи Чем заменить executor в aiogram 3?
Для отслеживания закрытия вкладки в Node.js можно воспользоваться событием 'beforeunload' в браузере, который запускается перед тем, как страница закроется или перезагрузится. Чтобы использовать это событие в Node.js, можно воспользоваться модулем 'electron', который позволяет создавать настольные приложения с использованием веб-технологий.
Пример кода на Node.js с использованием модуля 'electron':
В этом примере создается главное окно приложения с помощью модуля 'electron', и при закрытии вкладки срабатывает событие 'beforeunload', в котором можно добавить необходимую логику для обработки закрытия вкладки.
Помимо модуля 'electron', также можно воспользоваться другими библиотеками для отслеживания событий в браузере в Node.js, например, 'puppeteer'. Но в любом случае, использование события 'beforeunload' является одним из наиболее простых способов отслеживания закрытия вкладки в Node.js.
Для отслеживания закрытия вкладки в Node.js вы можете использовать событие 'beforeunload' в браузере, чтобы отправить запрос на сервер, уведомляющий о закрытии вкладки. Это можно сделать с помощью библиотеки socket.io, которая обеспечивает двунаправленную связь между сервером и клиентом.
Пример кода на стороне клиента (фронтенд):
Пример кода на стороне сервера (Node.js):
Этот код позволит вашему серверу отслеживать закрытие вкладки и выполнять необходимые действия при этом событии. Не забудьте установить и подключить библиотеку socket.io перед использованием кода.
Надеюсь, это поможет вам решить вашу проблему с отслеживанием закрытия вкладки в Node.js. Если у вас есть дополнительные вопросы, не стесняйтесь задавать.