sa10ry
@sa10ry
developer

Хронограф/таймер обратного отсчета в вебе?

Доброго дня, прошу помощи! Требуется создать хронограф/таймер обратного отчета на вэбе. Пока не понятно как и на чем.
Смысл таков:
Есть таймер обратного отсчета начало 60 секунд и до 0 или от 120 секунд до 0.
Есть управление - старт/пазу/сброс и 2 или 1 минута
Этот таймер должен работать на любых клиентах (браузерах) синхронно. Те запуск в одном месте а данные на всех и при этом этот таймер нужно встраивать (отображать) на разных страницах.
Те запускаем таймер на странице (10.0.0.1/timer) а на странице Табло (10.0.0.1/tablo) и других отображается этот таймер с одинаковым временем и возможностью управления (старт/пауза)
Обычный таймер на клиенте - понятно. Но как такое сделать и как, пока не понятно.
Раньше по вебсокету + js, пинал на php, но все сложно и плохо работало и прочее.
Куда копать, что читать, как это вообще возможно написать??? Может с БД может какие еще инструменты??

Благодарю Вас!

схема работы: 6222fac2a50fb095847572.png
  • Вопрос задан
  • 148 просмотров
Решения вопроса 2
Aetae
@Aetae Куратор тега Vue.js
Тлен
На сервере сохраняешь дату старта(серверную) при первом обращении и возвращаешь сколько осталось.
При последующих обращениях откуда угодно берёшь текущую дату на сервере и вычитаешь из неё стартовую, после чего возвращаешь сколько осталось.
На клиенте получаешь остаток и показываешь обычный таймер с этим числом работающий в клиентском времени.
Всё.

Никакая постоянная долбёжка сервера и синхронизация не нужна, если у юзера нет проблем с часами. Если есть(шанс на что пренебрежимо мал) - то это его проблемы, сервер всё рано знает точную дату.
Ответ написан
sa10ry
@sa10ry Автор вопроса
developer
готово в целом. вспомнил отписать!

Но без долбежки ЕЖЕСЕКУНДНО с некоторых клиентов, а это (судя по логам мускуля)

Сетевой трафик с момента запуска: 873.7 МБ
Этот сервер MySQL работает 0 дней, 25 часов, 37 минут и 16 секунд. Запущен Мар 16 2023 г.


ибо 100% необходима достоверные данные (json) короткие.
до 5-ти клиентов при работе в 3-4 часа максимум нагрузки, остальное простой

Вывод : нагрузка приемлемая, нужно тестировать. а так - все налмалды! Всем спасибо!
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
akubintsev
@akubintsev
Опытный backend разработчик
Я думаю можно спокойно ограничиться серверным стеком centrifugo + php-fpm.
При загрузке страницы происходит подключение к центрифуге и подписка на канал уведомлений о таймере.
При операциях старт/стоп/пауза отсылается запрос на бекенд. Бекенд делает необходимую логику по фиксации и шлёт уведомление в центрифугу в канал уведомлений, чтобы клиенты отреагировали соответствующим образом.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы