#reactjs #mern
#reactjs #mern
Вопрос:
Я создал time tracker, используя ванильный JS, HTML и CSS, и перепишу его в ReactJS. Функциональность приложения включает в себя отслеживание моих рабочих сессий / перерывов в течение дня, где у меня есть контроль над тем, когда запускать часы, делать перерыв и заканчивать часы. Я хотел бы создать приложение MERN fullstack, чтобы я мог получать мои сеансы / перерывы (и другие детали) для каждого дня (или определенного диапазона дней).
В чем я не уверен, так это в самом времени. Лучше ли отслеживать время во внешнем интерфейсе и отправлять его в серверную часть каждую секунду или вычислять время в серверной части и отправлять его во внешний интерфейс каждую секунду? Я бы хотел, чтобы отслеживание времени продолжалось, даже если страница перезагружена, обновлена, закрыта, что может указывать на последний подход, но также интерфейс может получить последнее обновление времени и вычислить разницу между этим временем и сейчас, чтобы обновить таймер.
Комментарии:
1. Что вы имеете в виду под » … отправлять его на серверную часть каждую секунду «? Собираетесь ли вы отправлять отслеживаемое время на серверную часть каждую секунду? Почему бы не отправить начальную и конечную временную метку и позволить серверной части вычислить время сеанса / перерывов?
2. Но что, если страница обновляется, а таймер прерывается? Я бы хотел, чтобы таймер продолжал работать и в этом случае.
3. Для этого должно быть несколько способов. Например, вы можете запускать сеанс всякий раз, когда пользователь запускает таймер, и завершать сеанс, когда пользователь останавливает таймер. Даже при обновлении сеанс все еще сохраняется. Если вы хотите разрешить пользователям извлекать последние пару треков, вам, наверное, понадобится какое-то управление пользователями.
4. Но я также хочу отображать прогрессию времени во внешнем интерфейсе. Я думаю, может быть, в серверной части должен быть флаг, чтобы знать, каково состояние таймера (воспроизведение / нет, сеанс / перерыв), и когда страница снова откроется, она должна сначала проверить этот флаг, чтобы получить последнюю временную метку активности / бездействия и выполнить вычисления во внешнем интерфейсе, чтобыкомпенсировать разницу во времени (с текущего времени, когда страница открывается снова) или начать с нуля.