Синхронизированный таймер с socket.io - PullRequest
0 голосов
/ 10 октября 2019

Я строю портал, где студенты могут давать имитационный тест. Для этого мне нужно синхронизировать таймер, запущенный в браузере пользователя, с сервером и сохранить некоторые дополнительные данные теста, сохраненные на сервере во время его выполнения.

Ниже приведены примеры использования:

a. При запуске теста данные теста извлекаются, сохраняются в переменной с socket.io и запускается таймер - работает

b. При действии пользователя событие запускается из внешнего интерфейса и обновляются тестовые данные на socket.io - работает

c. При отключении обновленные данные теста сохраняются обратно в базу данных (в то время как данные также присутствуют в сокете io). Событие запускается с опозданием на несколько секунд при отключении Интернета

d. При повторном подключении последние доступные тестовые данные должны быть доступны в сокете

e. При обновлении страницы последние доступные тестовые данные должны быть отправлены обратно в браузер, и тест должен быть возобновлен

Варианты использования a, b и c работают отлично. Принимая во внимание, что в случае использования d во время переподключения идентификатор сокета изменяется, и данные, сохраненные с socket.io, теряются.

Чтобы исправить это, я добавил код для извлечения данных из базы данных при переподключении. Что хорошо работает в сценариях, когда существует некоторый промежуток времени между отключением и повторным подключением. Но при обновлении страницы событие отключения не запускается сразу, и последние сохраненные данные в базе данных возвращаются клиенту.

Есть ли способ использовать пользовательский идентификатор сокета и сохранять данные постоянными на socket.io, когда происходит отключение и повторное подключение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...