@Higrok

Как продолжить выполнение функции на сайте после закрытия вкладки?

Здравствуйте!

У меня на сайте есть js-функция с setInterval внутри, которая может выполняться очень много времени (зависит от значения некоторых переменных), как можно сделать так, чтобы она выполнялась даже в тот момент, когда пользователь покинет сайт?

Это что-то вроде онлайн игры, где пользователь имеет возможность сажать морковь, каждая из которых растёт 5 минут, и этих овощей можно посадить очень много, из-за чего придётся соответствующее ждать.И главный вопрос в том, как сделать так, чтобы морковь росла даже когда пользователь покинул сайт?
  • Вопрос задан
  • 273 просмотра
Решения вопроса 2
Stalker_RED
@Stalker_RED
Было бы круто, если б функция продолжала работать когда пользователь покинул сайт, закрыл браузер, и вообще вырубил комп. Я б тогда намайнил...

Но пока техника до такого не дошла, придется делать как все:
при следующем входе юзера проверять сколько прошло времени, и рисовать морковь прям пачками.
Или на стороне сервера крутить это вот все, тогда юзеру еще и хакнуть количество моркови будет сложнее.
Ответ написан
Комментировать
zkrvndm
@zkrvndm
Архитектор решений
Никак, так как нельзя на стороне сайта запретить браузеру, выгружать вкладку из памяти, если она потеряла фокус. У вас должна быть функция для расчета роста моркови в зависимости от времени посадки и текущей даты. Соответственно, каждый раз когда пользователь возвращается на сайт или возвращает фокус на вкладку обратно, вы через эту функцию считайте насколько выросла морковь и показывайте пользователю текущий прогресс.

P. S. Важный момент, при расчете вы НЕ должны опираться на локальное время пользователя, всегда запрашивайте текущее время из какого-нибудь внешнего источника, так как игроку ни что не мешает на компе тупо перевести часы вперёд.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Sanes
@Sanes
JS тут не при чём. Это делается на стороне сервера(PHP). В браузере вы только получаете результат.
Ответ написан
Комментировать
usdglander
@usdglander
Yipee-ki-yay
Есть ещё вариант: Пишите серверный скрипт роста моркови, который каждые N минут увеличивает её на сколько то. И запускаете его выполнение на сервере.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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