使用 Rails 在给定时间重新加载网页
Reload a webpage at a given time using Rails
如何强制浏览器在每天凌晨 5 点自动重新加载 rails 应用程序?
我有一个网络应用程序,它安装在壁挂式电视上,用作我们办公室的一种实时仪表板。它包含仅在每天凌晨 4 点更新一次的信息。我希望它每天早上 5 点自动重新加载一次网页,而不是每天都刷新页面。
Andrew posted this javascript example 应该可以,虽然我想知道因为这是一个 Rails 4 应用程序,使用 Rails 推出刷新可能有更好的方法吗?
服务器无法在页面加载后影响浏览器状态。想象一下如果可以做到会发生什么。
将数据发送到客户端的一种解决方案是通过 WebSockets, but AFAIK these aren't yet supported in Rails 4, but are coming in Rails 5.I haven't used the technology with rails, but this is probably the solution: websocket-rails。
如果您不想使用 WebSockets 支持来实现,那么剩下的解决方案就是您已经找到的解决方案。
您可以使用 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 点自动重新加载 rails 应用程序?
我有一个网络应用程序,它安装在壁挂式电视上,用作我们办公室的一种实时仪表板。它包含仅在每天凌晨 4 点更新一次的信息。我希望它每天早上 5 点自动重新加载一次网页,而不是每天都刷新页面。
Andrew posted this javascript example 应该可以,虽然我想知道因为这是一个 Rails 4 应用程序,使用 Rails 推出刷新可能有更好的方法吗?
服务器无法在页面加载后影响浏览器状态。想象一下如果可以做到会发生什么。
将数据发送到客户端的一种解决方案是通过 WebSockets, but AFAIK these aren't yet supported in Rails 4, but are coming in Rails 5.I haven't used the technology with rails, but this is probably the solution: websocket-rails。
如果您不想使用 WebSockets 支持来实现,那么剩下的解决方案就是您已经找到的解决方案。
您可以使用 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 执行。