用户离开浏览器时运行Web应用

时间:2020-10-18 20:54:01

标签: javascript ruby-on-rails ruby

我有一个使用Ruby on Rails HTML,CSS和JS构建的Web应用程序。该网站有一个秒表,即使用户不在该网站上,我也希望它能够继续运行。 例如,用户将手机放在网站上,启动秒表(由JS构建),然后离开浏览器,继续使用手机的其他应用程序,然后当他返回时,他应该看到已经过去了多少时间因为他们开始了秒表。

而且,即使他们关闭浏览器(虽然不是选项卡),也可以保持其运行吗?

1 个答案:

答案 0 :(得分:0)

您在这里有一些选择。

在cookie中开始存储的时间

您可以将start_at时间存储在cookie中,然后读取它并根据该时间设置计时器。

class TimersController
  def create
    cookies[:started_at] = Time.now
  end

  def show
    cookies[:started_at]
  end
end

这是实现它的最简单方法。当然,如果用户在浏览器中删除cookie或使用其他设备,计时器将重置。

https://api.rubyonrails.org/v5.1.7/classes/ActionDispatch/Cookies.html

存储在数据库中

这是一个更复杂但也不易出错的解决方案。您可以在计时器启动时将信息存储在后端的数据库中。

要将计时器与启动时间关联,您需要在数据库中创建一个具有id或哈希值的记录。

class TimersController
  def create
    Timer.create(started_at: Time.now)
  end

  def show
    @timer = Timer.find(params[:id])
  end
end

然后显示计时器的网址将类似于timers/1timers/abc

一种更复杂的解决方案还可以通过用户ID来获取计时器,但随后还需要进行用户身份验证等。

在这两种解决方案中,当用户回到标签页时,您都需要使用JS刷新页面。

相关问题