Как обновить статус в БД на сайте, оставить / закрыть? - PullRequest
1 голос
/ 06 ноября 2019

Я хочу обновить флаг состояния 1, если пользователь работает на странице «XYZ», и сразу же обновить 0, когда пользователь покидает эту страницу.

Я могу обновить флаг 1 простым запросом обновления с помощью linq в соответствующем контроллере. когда пользователь входит в.

, но проблема в том, как обновить флаг 0, когда пользователь покидает или закрывает окно браузера напрямую

Я попытался добавить следующий код:

window.onload = function () {
    window.addEventListener("beforeunload", function (e) {
        ----------AJAX FUNCTION TO UPDATE DATA HERE--------------
    });
};

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

1 Ответ

0 голосов
/ 06 ноября 2019

Вы не можете быть уверены, что это будет работать согласованно, просто используя функциональность на стороне клиента, так как может быть множество способов завершения сеанса, которые НЕ будут пойманы этим. Примерами могут быть:

  • потеря интернет-соединения
  • потеря питания
  • отключение конечной точки сервера

Если вы хотите согласованности в этом,вы должны зарезервировать его чем-нибудь на стороне сервера, которое «истекает» сессиями, о которых не было слышно в течение x минут.

Итак, мое предложение:

  1. Установите флаг в 1когда пользователь заходит на страницу.
  2. Реализуйте код, который вам уже нужно обновить, чтобы установить флаг на 0.
  3. Запустите серверную функцию (можно использовать Hangfire для фоновых заданий) и обновите все сеансы с флагомОт 1 до 0, если он не был активен в течение x минут.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...