cot_shaurma
@cot_shaurma
Java и всего понемногу

Как отследить, что пользователь прервал тест?

Для хранения сессий я использую Spring Session и Redis. То есть сессия хранится не в памяти, а в БД.

Есть пользователь. Пользователь может начать проходить тест. То есть с сервера приходит вопрос, пользователь даёт ответ, и так пока вопросы не кончатся. Когда они кончатся, надо записать в БД результат теста.

Проблема вот в чём. Я собираюсь хранить ответы пользователя (у ещё не пройденного до конца теста) в сессии, а сессия сохраняется в Redis. И пользователь может уйти со страницы, закрывать вкладку и т.д., а потом вернётся назад и, если сессия у него всё ещё открыта, то он будет проходить тест с середины.

А я хочу, чтобы в таких случаях он проходил тест с самого начала! Как я мог сделать сброс теста? На ум приходит пингование. Буду постоянно пинговать, каждые 5 секунд буду устанавливать в сессию время последнего пинга, а при запросах пользователя на получении нового вопроса будет делать проверка - а когда был последний пинг? Если давно, то сбрасывать тест. Но это решение кажется костыльным.

Есть у кого варианты?
  • Вопрос задан
  • 119 просмотров
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Можно передать с сервера сразу все вопросы, на клиенте показывать их по очереди или в произвольной последовательности, а в конце отправлять сразу все ответы.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы