【问题标题】:Reload a webpage at a given time using Rails使用 Rails 在给定时间重新加载网页
【发布时间】:2023-04-07 21:38:01
【问题描述】:

如何强制浏览器在每天凌晨 5 点自动重新加载 rails 应用程序?

我有一个安装在壁挂式电视上的网络应用程序,它在我们的办公室用作一种实时仪表板。它包含每天凌晨 4 点仅更新一次的信息。我希望它每天早上 5 点自动重新加载网页一次,而不是每天刷新页面。

Andrew posted this javascript example 应该可以工作,虽然我想知道既然这是一个 Rails 4 应用程序,那么使用 Rails 推出刷新可能有更好的方法吗?

【问题讨论】:

    标签: javascript ruby-on-rails page-refresh


    【解决方案1】:

    您可以使用 javascript 超时功能每 24 小时运行一次:

    function YourFunction(){
        var dateOne = new Date();
        var dateTwo = new Date(dateOne.getTime() + 86400000); // + 1 day in ms
        //now setting it to 5 AM
        dateTwo.setHours(5);
        dateTwo.setMinutes(0);
        dateTwo.setSeconds(0);
        dateTwo.setMilliseconds(0);
    
        //getting the delay in ms 
        var timeDelay = dateTwo.getTime() - dateOne.getTime(); // delay in ms until next day 5:00:00 AM
    
         //preparing for next day's execution:
        setTimeout(function(){ 
        window.location = window.location.pathname;
        }, timeDelay);
    }
    

    或者你可以使用NodeJS runtime,这样你就可以从服务器推送javascript执行。

    【讨论】:

    • 这段代码必须在凌晨 5 点运行,并且每次崩溃或页面必须重新加载时,都必须在凌晨 5 点再次运行。更好的解决方案是将超时时间计算为现在和下一个凌晨 5 点之间的时间差。
    • 我们可以在函数本身中完成,我会为你更新代码。
    • 抱歉听起来很愚蠢,但是您的代码 *** 部分的 *** 是干什么用的?我只是想让页面刷新。仅供参考,我正在使用 jQuery 运行 Rails 4
    • 我认为您必须在重新加载的一部分中执行一些 javascript。我已经更新了代码,所以它只是在凌晨 5 点重新加载页面。只需在页面加载事件中调用该函数。如果您的页面上有查询字符串,您可能需要调整“window.location.pathname”部分;
    【解决方案2】:

    页面加载后服务器无法影响浏览器状态。想象一下,如果可以做到这一点会发生什么。

    将数据发送到客户端的一种解决方案是通过WebSockets,但 AFAIK 这些在 Rails 4 中尚不支持,但在 Rails 5 中即将推出。我没有使用 Rails 的技术,但是这个可能是解决方案:websocket-rails

    如果您不喜欢使用 WebSockets 支持来实现,那么您已经找到了唯一的解决方案。

    【讨论】:

    • 谢谢。对于这个简单的应用程序,启动并运行 WebSocket 有点过头了。我会坚持使用 javascript 或 META 标记解决方案。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多